DayZ 1.28
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
82 {
83 if (m_Src)
84 return m_Src.GetItem();
85 return null;
86 }
87 EntityAI GetSecondSrcEntity () { return null; }
88 InventoryLocation GetDst () { return null; }
89 int GetAnimationID () { return m_AnimationID; }
90 bool AcquireInventoryJunctureFromServer (notnull Man player) { return false; }
91 bool CheckRequest () { return true; }
93 {
97 if (validation.m_IsRemote || validation.m_IsJuncture)
98 return true;
99
100 return CheckRequest();
101 }
102 bool CanPerformEvent () { return true; }
104 bool CheckRequestSrc () { return true; }
105 bool IsServerSideOnly () { return false; }
106
107 static HandEventBase HandEventFactory (HandEventID id, Man p = null, InventoryLocation src = null)
108 {
109 switch (id)
110 {
111 case HandEventID.UNKNOWN: return null;
112 case HandEventID.TAKE: return new HandEventTake(p, src);
113 case HandEventID.MOVETO: return new HandEventMoveTo(p, src);
114 case HandEventID.DROP: return new HandEventDrop(p, src);
115 case HandEventID.THROW: return new HandEventThrow(p, src);
116 case HandEventID.SWAP: return new HandEventSwap(p, src);
117 case HandEventID.FORCESWAP: return new HandEventForceSwap(p, src);
118 case HandEventID.DESTROY: return new HandEventDestroy(p, src);
119 case HandEventID.CREATED: return new HandEventCreated(p, src);
120 case HandEventID.DESTROYED: return new HandEventDestroyed(p, src);
121 case HandEventID.REPLACE: return new HandEventDestroyAndReplaceWithNew(p, src);
122 case HandEventID.REPLACE2: return new HandEventDestroyAndReplaceWithNewElsewhere(p, src);
123 case HandEventID.REPLACE3: return new HandEventDestroyElsewhereAndReplaceWithNewInHands(p, src);
124 case HandEventID.REPLACED: return new HandEventReplaced(p, src);
125 case HandEventID.ANIMEVENT_CHANGE_HIDE: return HandAnimEventChanged(p, src);
126 case HandEventID.HUMANCOMMAND_ACTION_FINISHED : return HandEventHumanCommandActionFinished(p, src);
127 case HandEventID.HUMANCOMMAND_ACTION_ABORTED : return HandEventHumanCommandActionAborted(p, src);
128 }
129 Error("[hndfsm] HandEventFactory - unregistered hand event with id=" + id);
130 return null;
131 }
132
134 {
135 int eventID = -1;
136 if (!ctx.Read(eventID))
137 {
138 Error("[hndfsm] CreateHandEventFromContext - cannot read eventID");
139 return null;
140 }
141 Man player;
142 if (!ctx.Read(player))
143 {
144 Error("[hndfsm] CreateHandEventFromContext - cannot read player");
145 return null;
146 }
149
150 int animID = -1;
151 if (!ctx.Read(animID))
152 {
153 Error("[hndfsm] CreateHandEventFromContext - cannot read animID");
154 return null;
155 }
156 HandEventBase b = HandEventFactory(eventID, player, src);
157 if (b)
158 {
159 b.m_AnimationID = animID;
160 b.ReadFromContext(ctx);
161 }
162 return b;
163 }
164
165 string DumpToString ()
166 {
167 string res = "{ HandEv id=" + typename.EnumToString(HandEventID, GetEventID());
168 res = res + " pl=" + Object.GetDebugName(m_Player);
169 res = res + " src=" + InventoryLocation.DumpToStringNullSafe(m_Src);
170 res = res + " }";
171 return res;
172 }
173
175 {
177 if (!il)
178 {
179 il = GetSrc();
180 }
181
182 if (il && !m_Player.GetHumanInventory().HasInventoryReservation(il.GetItem(),il))
183 {
184 if (m_Player.GetHumanInventory().AddInventoryReservationEx(il.GetItem(), il, GameInventory.c_InventoryReservationTimeoutShortMS))
185 {
186 return true;
187 }
188 }
189
190 return false;
191 }
192
194 {
196 if (il)
197 {
198 il = GetSrc();
199 }
200
201 if (il)
202 {
203 m_Player.GetHumanInventory().ClearInventoryReservationEx(il.GetItem(), il);
204 }
205 }
206};
207
209{
210 void HandEventTake (Man p = null, InventoryLocation src = null) { m_EventID = HandEventID.TAKE; }
211
213 {
216 return dst;
217 }
218
219 override bool CheckRequestSrc ()
220 {
222 {
223 Debug.InventoryHFSMLog("CANNOT perform", typename.EnumToString(HandEventID, GetEventID()) , "n/a", "CheckRequestSrc", m_Player.ToString() );
224 if (LogManager.IsSyncLogEnable()) syncDebugPrint("[cheat] HandleInputData man=" + Object.GetDebugName(m_Player) + " failed src1 check with cmd=" + typename.EnumToString(HandEventID, GetEventID()) + " src1=" + InventoryLocation.DumpToStringNullSafe(GetSrc()));
225 return false; // stale packet
226 }
227 return true;
228 }
229
234
235 override bool CanPerformEventEx(InventoryValidation validation)
236 {
237 if (validation.m_IsJuncture)
238 {
239 return true;
240 }
241
243 {
244 #ifdef ENABLE_LOGGING
246 {
247 Debug.InventoryHFSMLog("CANNOT perform", typename.EnumToString(HandEventID, GetEventID()) , "n/a", "CanPerformEvent", m_Player.ToString() );
248 }
249 #endif
250 //if (LogManager.IsInventoryHFSMLogEnable()) hndDebugPrint("[desync] HandleInputData man=" + Object.GetDebugName(m_Player) + " CANNOT perform ev=" + DumpToString());
251 return false;
252 }
253
254 return super.CanPerformEventEx(validation);
255 }
256
257 override bool AcquireInventoryJunctureFromServer (notnull Man player)
258 {
261 if (src && dst)
262 {
263 return TryAcquireInventoryJunctureFromServer(player, src, dst);
264 }
265 Error("[hndfsm] HandEventTake. AcquireInventoryJunctureFromServer: no src or dst for ev=" + DumpToString());
266 return JunctureRequestResult.ERROR;
267 }
268};
269
270class HandEventMoveTo extends HandEventBase
271{
273
274 void HandEventMoveTo (Man p = null, InventoryLocation src = null, InventoryLocation dst = null) { m_EventID = HandEventID.MOVETO; m_Dst = dst; }
275
277 {
279 super.ReadFromContext(ctx);
280 m_Dst.ReadFromContext(ctx);
281 }
283 {
284 super.WriteToContext(ctx);
285 m_Dst.WriteToContext(ctx);
286 }
287
288 override InventoryLocation GetDst () { return m_Dst; }
289
290 override bool CheckRequestSrc ()
291 {
293 {
294 if (LogManager.IsSyncLogEnable()) syncDebugPrint("[cheat] HandleInputData man=" + Object.GetDebugName(m_Player) + " failed src1 check with cmd=" + typename.EnumToString(HandEventID, GetEventID()) + " src1=" + InventoryLocation.DumpToStringNullSafe(GetSrc()));
295 return false; // stale packet
296 }
297 return true;
298 }
299
304
305 override bool CanPerformEvent ()
306 {
308 {
309 #ifdef ENABLE_LOGGING
311 {
312 Debug.InventoryHFSMLog("CANNOT perform", typename.EnumToString(HandEventID, GetEventID()) , "n/a", "CanPerformEvent", m_Player.ToString() );
313 }
314 #endif
315 return false;
316 }
317 return true;
318 }
319
320 override bool AcquireInventoryJunctureFromServer (notnull Man player)
321 {
324 if (src && dst)
325 {
326 return TryAcquireInventoryJunctureFromServer(player, src, dst);
327 }
328 Error("[hndfsm] HandEventMoveTo. AcquireInventoryJunctureFromServer: no src or dst for ev=" + DumpToString());
329 return JunctureRequestResult.ERROR;
330 }
331
332 override string DumpToString ()
333 {
334 string res = "{ HandEventMoveTo id=" + typename.EnumToString(HandEventID, GetEventID()) + " pl=" + Object.GetDebugName(m_Player) + " src=" + InventoryLocation.DumpToStringNullSafe(m_Src) + " dst=" + InventoryLocation.DumpToStringNullSafe(m_Dst) + " }";
335 return res;
336 }
337};
338
340class HandEventRemove extends HandEventBase
341{
343 {
344 return m_Dst;
345 }
346
347 override bool CheckRequestSrc ()
348 {
350 {
351 #ifdef ENABLE_LOGGING
353 {
354 Debug.InventoryHFSMLog("Check src - failed, src = " + InventoryLocation.DumpToStringNullSafe(GetSrc()), typename.EnumToString(HandEventID, GetEventID()) , "n/a", "CheckRequestSrc", m_Player.ToString() );
355 }
356 #endif
357 return false; // stale packet
358 }
359 return true;
360 }
361
366
367 override bool CanPerformEvent ()
368 {
371
372 if (!dst)
373 {
374 #ifdef ENABLE_LOGGING
376 {
377 Debug.InventoryHFSMLog("CANNOT perform. Dst location is NULL!", typename.EnumToString(HandEventID, GetEventID()) , "n/a", "CanPerformEvent", m_Player.ToString() );
378 }
379 #endif
380 return false;
381 }
382
383 if (dst.GetType() == InventoryLocationType.UNKNOWN)
384 {
385 #ifdef ENABLE_LOGGING
387 {
388 Debug.InventoryHFSMLog("CANNOT perform. Dst location type is UNKNOWN!", typename.EnumToString(HandEventID, GetEventID()) , "n/a", "CanPerformEvent", m_Player.ToString() );
389 }
390 #endif
391 return false;
392 }
393
395 {
396 #ifdef ENABLE_LOGGING
398 {
399 Debug.InventoryHFSMLog("CANNOT perform", typename.EnumToString(HandEventID, GetEventID()) , "n/a", "CanPerformEvent", m_Player.ToString() );
400 }
401 #endif
402 return false;
403 }
404 return true;
405 }
406
407 override bool AcquireInventoryJunctureFromServer (notnull Man player)
408 {
411 if (src && dst)
412 {
413 return TryAcquireInventoryJunctureFromServer(player, src, dst);
414 }
415 Error("[hndfsm] HandEventThrow. AcquireInventoryJunctureFromServer: no src or dst for ev=" + DumpToString());
416 return JunctureRequestResult.ERROR;
417 }
418
419 ref InventoryLocation m_Dst;
420};
421
423{
424 void HandEventDrop (Man p = null, InventoryLocation src = null)
425 {
426 m_EventID = HandEventID.DROP;
427 m_CanPerformDrop = true;
428 }
429
431 {
432 super.ReadFromContext(ctx);
433
434 if (!m_Dst)
435 {
436 m_Dst = new InventoryLocation();
437 }
438
441 }
442
444 {
445 super.WriteToContext(ctx);
446
449 }
450
451 override bool CheckRequestEx(InventoryValidation validation)
452 {
454 if (!validation.m_IsJuncture && IsAuthoritative())
455 {
457 }
458
459 if (!m_CanPerformDrop)
460 {
461 validation.m_Reason = InventoryValidationReason.DROP_PREVENTED;
462 return false;
463 }
464
465 return super.CheckRequestEx(validation);
466 }
467
468 override bool CanPerformEventEx(InventoryValidation validation)
469 {
470 if (!m_CanPerformDrop)
471 {
472 return false;
473 }
474
476 if (!validation.m_IsJuncture && !validation.m_IsRemote && !GetDst() && (GetGame().IsMultiplayer() && GetGame().IsClient()))
477 {
478 return true;
479 }
480
482 if (!validation.m_IsRemote && !GetDst())
483 {
484 m_Dst = new InventoryLocation();
486
487 if (!m_CanPerformDrop)
488 {
489 validation.m_Reason = InventoryValidationReason.DROP_PREVENTED;
490 return false;
491 }
492 }
493
494 return super.CanPerformEventEx(validation);
495 }
496
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.GetItem();
603 }
604
605 override bool CheckRequestSrc ()
606 {
607 //return false;
608
610 {
611 if (LogManager.IsSyncLogEnable()) syncDebugPrint("[cheat] HandleInputData man=" + Object.GetDebugName(m_Player) + " failed src1 check with cmd=" + typename.EnumToString(HandEventID, GetEventID()) + " src1=" + InventoryLocation.DumpToStringNullSafe(GetSrc()));
612 return false; // stale packet
613 }
615 {
616 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));
617 return false; // stale packet
618 }
619 return true;
620 }
621
622 override bool CheckRequest ()
623 {
625 {
626 #ifdef ENABLE_LOGGING
628 {
629 Debug.InventoryHFSMLog("CheckSwapItemsRequest - failed", typename.EnumToString(HandEventID, GetEventID()) , "n/a", "CheckRequest", m_Player.ToString() );
630 }
631 #endif
632 }
633 else if (!m_Player.GetHumanInventory().CanAddSwappedEntity(m_Src, m_Src2, m_Dst, m_Dst2))
634 {
635 #ifdef ENABLE_LOGGING
637 {
638 Debug.InventoryHFSMLog("CanAddSwappedEntity - failed", typename.EnumToString(HandEventID, GetEventID()) , "n/a", "CheckRequest", m_Player.ToString() );
639 }
640 #endif
641 }
642 else
643 return true;
644
645 return false;
646 }
647
648 override bool CanPerformEvent ()
649 {
651 return true;
652
653 #ifdef ENABLE_LOGGING
655 {
656 Debug.InventoryHFSMLog("CANNOT perform", typename.EnumToString(HandEventID, GetEventID()) , "n/a", "CanPerformEvent", m_Player.ToString() );
657 }
658 #endif
659 return false;
660 }
661
662 override bool AcquireInventoryJunctureFromServer (notnull Man player)
663 {
665 }
666
667 override string DumpToString ()
668 {
669 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) + " }";
670 }
671
673 {
674 DayZPlayer player = DayZPlayer.Cast(m_Player);
675 player.ForceStandUpForHeavyItemsSwap( m_Src.GetItem(), m_Src2.GetItem() );
676 }
677
678 override bool ReserveInventory()
679 {
680 if (!m_Player.GetHumanInventory().HasInventoryReservation(m_Dst.GetItem(), m_Dst) && !m_Player.GetHumanInventory().HasInventoryReservation(m_Dst2.GetItem(), m_Dst2))
681 {
682 if (m_Player.GetHumanInventory().AddInventoryReservationEx(m_Dst.GetItem(), m_Dst, GameInventory.c_InventoryReservationTimeoutShortMS))
683 {
684 if (m_Player.GetHumanInventory().AddInventoryReservationEx(m_Dst2.GetItem(), m_Dst2, GameInventory.c_InventoryReservationTimeoutShortMS))
685 {
686 return true;
687 }
688 else
689 {
690 m_Player.GetHumanInventory().ClearInventoryReservationEx(m_Dst.GetItem(), m_Dst);
691 }
692 }
693 }
694 return false;
695 }
696
698 {
699 m_Player.GetHumanInventory().ClearInventoryReservationEx(m_Dst.GetItem(), m_Dst);
700 m_Player.GetHumanInventory().ClearInventoryReservationEx(m_Dst2.GetItem(), m_Dst2);
701 }
702};
703
705{
706 void HandEventForceSwap (Man p = null, InventoryLocation src = null, InventoryLocation src2 = null, InventoryLocation dst = null, InventoryLocation dst2 = null) { m_EventID = HandEventID.FORCESWAP; }
707
708 override bool CheckRequest ()
709 {
710 bool test1 = false;
711 EntityAI inHands = m_Player.GetHumanInventory().GetEntityInHands();
712 if (GetSrcEntity() && inHands && m_Dst && m_Dst.IsValid())
713 {
715 #ifdef ENABLE_LOGGING
717 {
718 if (!test1)
719 Debug.InventoryHFSMLog("CheckSwapItemsRequest failed", typename.EnumToString(HandEventID, GetEventID()) , "n/a", "CheckRequest", m_Player.ToString() );
720 }
721 #endif
722 }
723 return test1;
724 }
725
726 override bool CanPerformEvent ()
727 {
728 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)
729 #ifdef ENABLE_LOGGING
731 {
732 if (!test2)
733 Debug.InventoryHFSMLog("CanForceSwapEntitiesEx failed", typename.EnumToString(HandEventID, GetEventID()) , "n/a", "CanPerformEvent", m_Player.ToString() );
734 }
735 #endif
736 return test2;
737 }
738};
739
740class HandEventDestroy extends HandEventBase
741{
742 void HandEventDestroy (Man p = null, InventoryLocation src = null) { m_EventID = HandEventID.DESTROY; }
743
744 override bool IsServerSideOnly () { return true; }
745};
746
747class HandEventCreated extends HandEventBase
748{
749 void HandEventCreated (Man p = null, InventoryLocation src = null) { m_EventID = HandEventID.CREATED; }
750};
751
752class HandEventDestroyed extends HandEventBase
753{
754 void HandEventDestroyed (Man p = null, InventoryLocation src = null) { m_EventID = HandEventID.DESTROYED; }
755};
756
758{
759 string m_Type;
761
762 void HandEvengReplaceWithNewBase (Man p = null, InventoryLocation src = null, ReplaceItemWithNewLambdaBase lambda = NULL) { m_EventID = HandEventID.REPLACE; m_Lambda = lambda; }
763
765 {
766 super.ReadFromContext(ctx);
767 ctx.Read(m_Type);
768 Error("[hndfsm] HandEventDestroyAndReplaceWithNew - Cannot serialize lambda (read)");
769 }
771 {
772 super.WriteToContext(ctx);
773 ctx.Write(m_Type);
774 Error("[hndfsm] HandEventDestroyAndReplaceWithNew - Cannot serialize lambda (write)");
775 }
776
777 override bool IsServerSideOnly () { return true; }
778
780 {
783 return dst;
784 }
785
786 override string DumpToString ()
787 {
788 string res = "{ HandEvenReplaceWithNewBase id=" + typename.EnumToString(HandEventID, GetEventID()) + " pl=" + Object.GetDebugName(m_Player) + " src=" + InventoryLocation.DumpToStringNullSafe(GetSrc()) + " lambda=" + m_Lambda + " dst=" + InventoryLocation.DumpToStringNullSafe(GetDst()) + " }";
789 return res;
790 }
791};
792
794{
795 void HandEventDestroyAndReplaceWithNew (Man p = null, InventoryLocation src = null, ReplaceItemWithNewLambdaBase lambda = NULL) { m_EventID = HandEventID.REPLACE; m_Lambda = lambda; }
796};
797
802
803class HandEventDestroyElsewhereAndReplaceWithNewInHands extends HandEventReplaceWithNewBase
804{
805 void HandEventDestroyElsewhereAndReplaceWithNewInHands (Man p = null, InventoryLocation src = null, ReplaceItemWithNewLambdaBase lambda = NULL) { m_EventID = HandEventID.REPLACE3; m_Lambda = lambda; }
806};
807
808class HandEventReplaced extends HandEventBase
809{
810 void HandEventReplaced (Man p = null, InventoryLocation src = null) { m_EventID = HandEventID.REPLACED; }
811};
812
813// anim events
814
815class HandAnimEventChanged extends HandEventBase
816{
817 void HandAnimEventChanged (Man p = null, InventoryLocation src = null) { m_EventID = HandEventID.ANIMEVENT_CHANGE_HIDE; }
818};
819
821{
822 switch (type)
823 {
824 case WeaponEvents.CHANGE_HIDE: return new HandAnimEventChanged(p, src);
825 case WeaponEvents.CHANGE_SHOW: return new HandAnimEventChanged(p, src);
826 }
827 return null;
828}
829
832class HandEventHumanCommandActionFinished extends HandEventBase
833{
834 void HandEventHumanCommandActionFinished (Man p = null, InventoryLocation src = null) { m_EventID = HandEventID.HUMANCOMMAND_ACTION_FINISHED; }
835};
838class HandEventHumanCommandActionAborted extends HandEventBase
839{
840 void HandEventHumanCommandActionAborted (Man p = null, InventoryLocation src = null) { m_EventID = HandEventID.HUMANCOMMAND_ACTION_ABORTED; }
841};
842
844
void syncDebugPrint(string s)
Определения 3_Game/Systems/Inventory/Debug.c:1
InventoryValidationReason
@ UNKNOWN
24 - Any other error. Can be returned from any call.
Определения BIOSErrorModule.c:56
@ 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:107
bool m_IsRemote
Определения Hand_Events.c:50
JUNCTURE_ACQUIRED
Определения Hand_Events.c:30
static HandEventBase CreateHandEventFromContext(ParamsReadContext ctx)
Определения Hand_Events.c:133
int GetAnimationID()
Определения Hand_Events.c:89
bool IsAuthoritative()
Определения Hand_Events.c:55
InventoryLocation GetSrc()
Определения Hand_Events.c:80
ref InventoryLocation m_Src
Определения Hand_Events.c:43
bool m_IsJuncture
Определения Hand_Events.c:49
HandEventBase HandAnimEventFactory(WeaponEvents type, Man p=null, InventoryLocation src=null)
Определения Hand_Events.c:820
JUNCTURE_DENIED
Определения Hand_Events.c:31
JunctureRequestResult
Определения Hand_Events.c:28
JUNCTURE_NOT_REQUIRED
Определения Hand_Events.c:29
m_EventID
bool CheckRequestEx(InventoryValidation validation)
Определения Hand_Events.c:92
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:165
EntityAI GetSrcEntity()
Определения Hand_Events.c:81
InventoryLocation GetDst()
Определения Hand_Events.c:88
bool IsProxy()
Определения Hand_Events.c:65
Icon x
Icon y
bool OptionalLocationReadFromContext(out InventoryLocation loc, notnull ParamsReadContext ctx)
Определения InventoryLocation.c:662
InventoryLocationType
types of Inventory Location
Определения InventoryLocation.c:4
bool OptionalLocationWriteToContext(InventoryLocation loc, notnull ParamsWriteContext ctx)
Определения InventoryLocation.c:640
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:35
EntityAI GetItem()
Определения RadialQuickbarMenu.c:37
Super root of all classes in Enforce script.
Определения EnScript.c:11
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/tools/Debug.c:147
Определения 3_Game/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
void HandAnimEventChanged(Man p=null, InventoryLocation src=null)
Определения Hand_Events.c:817
override bool CanPerformEvent()
Определения Hand_Events.c:305
override InventoryLocation GetDst()
Определения Hand_Events.c:212
override bool AcquireInventoryJunctureFromServer(notnull Man player)
Определения Hand_Events.c:257
override bool CheckRequest()
Определения Hand_Events.c:230
override bool ReserveInventory()
Определения Hand_Events.c:678
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:749
string m_Type
Определения Hand_Events.c:759
override EntityAI GetSecondSrcEntity()
Определения Hand_Events.c:600
ref ReplaceItemWithNewLambdaBase m_Lambda
Определения Hand_Events.c:760
void HandEventHumanCommandActionFinished(Man p=null, InventoryLocation src=null)
Определения Hand_Events.c:834
void CheckAndExecuteForceStandUp()
Определения Hand_Events.c:672
void HandEventTake(Man p=null, InventoryLocation src=null)
Определения Hand_Events.c:210
override bool IsServerSideOnly()
Определения Hand_Events.c:744
void HandEventReplaced(Man p=null, InventoryLocation src=null)
Определения Hand_Events.c:810
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:742
void HandEventMoveTo(Man p=null, InventoryLocation src=null, InventoryLocation dst=null)
destination for item in hands
Определения Hand_Events.c:274
override string DumpToString()
Определения Hand_Events.c:332
override void ReadFromContext(ParamsReadContext ctx)
Определения Hand_Events.c:276
override void ClearInventoryReservation()
Определения Hand_Events.c:697
override void WriteToContext(ParamsWriteContext ctx)
Определения Hand_Events.c:282
void HandEvengReplaceWithNewBase(Man p=null, InventoryLocation src=null, ReplaceItemWithNewLambdaBase lambda=NULL)
Определения Hand_Events.c:762
override bool CheckRequestSrc()
Определения Hand_Events.c:219
void HandEventDestroyed(Man p=null, InventoryLocation src=null)
Определения Hand_Events.c:754
override bool CanPerformEventEx(InventoryValidation validation)
Определения Hand_Events.c:235
void HandEventHumanCommandActionAborted(Man p=null, InventoryLocation src=null)
Определения Hand_Events.c:840
ref InventoryLocation m_Src2
destination for new item (i.e. hands)
Определения Hand_Events.c:559
ref InventoryLocation m_Dst
Определения Hand_Events.c:272
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:209
void HandEventDestroyAndReplaceWithNewElsewhere(Man p=null, InventoryLocation src=null, ReplaceItemWithNewLambdaBase lambda=NULL)
Определения Hand_Events.c:800
void HandEventDrop(Man p=null, InventoryLocation src=null)
Определения Hand_Events.c:424
override void ReadFromContext(ParamsReadContext ctx)
Определения Hand_Events.c:430
vector GetForce()
Определения Hand_Events.c:550
void HandEventThrow(Man p=null, InventoryLocation src=null)
Определения Hand_Events.c:502
bool m_CanPerformDrop
Определения Hand_Events.c:497
override void WriteToContext(ParamsWriteContext ctx)
Определения Hand_Events.c:443
override bool CheckRequestEx(InventoryValidation validation)
Определения Hand_Events.c:451
vector m_Force
Определения Hand_Events.c:552
void SetForce(vector force)
Определения Hand_Events.c:549
override bool CanPerformEventEx(InventoryValidation validation)
Определения Hand_Events.c:468
Определения Hand_Events.c:423
void HandEventDestroyAndReplaceWithNew(Man p=null, InventoryLocation src=null, ReplaceItemWithNewLambdaBase lambda=NULL)
Определения Hand_Events.c:795
void HandEventDestroyElsewhereAndReplaceWithNewInHands(Man p=null, InventoryLocation src=null, ReplaceItemWithNewLambdaBase lambda=NULL)
Определения Hand_Events.c:805
void HandEventForceSwap(Man p=null, InventoryLocation src=null, InventoryLocation src2=null, InventoryLocation dst=null, InventoryLocation dst2=null)
Определения Hand_Events.c:706
override bool CheckRequest()
Определения Hand_Events.c:708
override bool CanPerformEvent()
Определения Hand_Events.c:726
Определения Hand_Events.c:705
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 int GetType()
returns type of InventoryLocation
bool ReadFromContext(ParamsReadContext ctx)
Определения InventoryLocation.c:296
proto native EntityAI GetItem()
returns item of current inventory location
InventoryLocation.
Определения InventoryLocation.c:29
InventoryValidationReason m_Reason
static bool IsSyncLogEnable()
Определения 3_Game/tools/Debug.c:678
static bool IsInventoryHFSMLogEnable()
Определения 3_Game/tools/Debug.c:668
Определения 3_Game/tools/Debug.c:594
Определения 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:106
DayZPlayerInstanceType
defined in C++
Определения dayzplayer.c:1068
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
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:967