86 return m_Src.GetItem();
117 case HandEventID.DROP:
return new HandEventDrop(p, src);
118 case HandEventID.THROW:
return new HandEventThrow(p, src);
120 case HandEventID.FORCESWAP:
return new HandEventForceSwap(p, src);
125 case HandEventID.REPLACE2:
return new HandEventDestroyAndReplaceWithNewElsewhere(p, src);
126 case HandEventID.REPLACE3:
return new HandEventDestroyElsewhereAndReplaceWithNewInHands(p, src);
132 Error(
"[hndfsm] HandEventFactory - unregistered hand event with id=" +
id);
139 if (!ctx.
Read(eventID))
141 Error(
"[hndfsm] CreateHandEventFromContext - cannot read eventID");
145 if (!ctx.
Read(player))
147 Error(
"[hndfsm] CreateHandEventFromContext - cannot read player");
154 if (!ctx.
Read(animID))
156 Error(
"[hndfsm] CreateHandEventFromContext - cannot read animID");
162 b.m_AnimationID = animID;
185 if (il && !
m_Player.GetHumanInventory().HasInventoryReservation(il.
GetItem(),il))
206 m_Player.GetHumanInventory().ClearInventoryReservationEx(il.
GetItem(), il);
242 #ifdef ENABLE_LOGGING
252 return super.CanPerformEventEx(validation);
263 Error(
"[hndfsm] HandEventTake. AcquireInventoryJunctureFromServer: no src or dst for ev=" +
DumpToString());
278 m_Dst.ReadFromContext(ctx);
282 super.WriteToContext(ctx);
283 m_Dst.WriteToContext(ctx);
310 #ifdef ENABLE_LOGGING
329 Error(
"[hndfsm] HandEventMoveTo. AcquireInventoryJunctureFromServer: no src or dst for ev=" +
DumpToString());
352 #ifdef ENABLE_LOGGING
378 #ifdef ENABLE_LOGGING
389 #ifdef ENABLE_LOGGING
400 #ifdef ENABLE_LOGGING
419 Error(
"[hndfsm] HandEventThrow. AcquireInventoryJunctureFromServer: no src or dst for ev=" +
DumpToString());
439 super.ReadFromContext(ctx);
448 super.WriteToContext(ctx);
470 return super.CheckRequestEx(validation);
493 return super.CanPerformEventEx(validation);
512 entity.GetTransform(mat);
513 m_Dst.SetGround(entity, mat);
517 Error(
"[hndfsm] HandEventThrow src entity null!");
524 super.ReadFromContext(ctx);
540 super.WriteToContext(ctx);
542 m_Dst.WriteToContext(ctx);
573 super.ReadFromContext(ctx);
579 m_Src2.ReadFromContext(ctx);
580 m_Dst.ReadFromContext(ctx);
581 m_Dst2.ReadFromContext(ctx);
587 super.WriteToContext(ctx);
589 m_Src2.WriteToContext(ctx);
590 m_Dst.WriteToContext(ctx);
591 m_Dst2.WriteToContext(ctx);
642 #ifdef ENABLE_LOGGING
651 #ifdef ENABLE_LOGGING
669 #ifdef ENABLE_LOGGING
685 if (src1 && dst1 && src2 && dst2)
690 Error(
"[hndfsm] HandEventSwap. AcquireInventoryJunctureFromServer: no src or dst for ev=" +
DumpToString());
702 player.ForceStandUpForHeavyItemsSwap(
m_Src.GetItem(),
m_Src2.GetItem() );
737 if(
m_Src && m_Dst &&
m_Src.GetItem() != m_Dst.GetItem())
740 if(m_Src2 && m_Dst2 && m_Src2.GetItem() != m_Dst2.GetItem())
745 if (
GetSrcEntity() && inHands && m_Dst && m_Dst.IsValid())
748 #ifdef ENABLE_LOGGING
762 #ifdef ENABLE_LOGGING
799 super.ReadFromContext(ctx);
801 Error(
"[hndfsm] HandEventDestroyAndReplaceWithNew - Cannot serialize lambda (read)");
805 super.WriteToContext(ctx);
807 Error(
"[hndfsm] HandEventDestroyAndReplaceWithNew - Cannot serialize lambda (write)");
857 case WeaponEvents.CHANGE_HIDE:
return new HandAnimEventChanged(p, src);
858 case WeaponEvents.CHANGE_SHOW:
return new HandAnimEventChanged(p, src);
865class HandEventHumanCommandActionFinished
extends HandEventBase
871class HandEventHumanCommandActionAborted
extends HandEventBase
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.
static HandEventBase HandEventFactory(HandEventID id, Man p=null, InventoryLocation src=null)
static HandEventBase CreateHandEventFromContext(ParamsReadContext ctx)
InventoryLocation GetSrc()
ref InventoryLocation m_Src
InventoryLocation GetSecondDst()
HandEventBase HandAnimEventFactory(WeaponEvents type, Man p=null, InventoryLocation src=null)
InventoryLocation GetSecondSrc()
bool CheckRequestEx(InventoryValidation validation)
@ HUMANCOMMAND_ACTION_FINISHED
@ HUMANCOMMAND_ACTION_ABORTED
@ SWAP
swapping from ground
void HandEventBase(Man p=null, InventoryLocation src=null)
InventoryLocation GetDst()
bool OptionalLocationReadFromContext(out InventoryLocation loc, notnull ParamsReadContext ctx)
InventoryLocationType
types of Inventory Location
bool OptionalLocationWriteToContext(InventoryLocation loc, notnull ParamsWriteContext ctx)
bool TryAcquireInventoryJunctureFromServer(notnull Man player, notnull InventoryLocation src, notnull InventoryLocation dst)
bool TryAcquireTwoInventoryJuncturesFromServer(notnull Man player, notnull InventoryLocation src1, notnull InventoryLocation src2, notnull InventoryLocation dst1, notnull InventoryLocation dst2)
Super root of all classes in Enforce script.
static void InventoryHFSMLog(string message=LOG_DEFAULT, string plugin=LOG_DEFAULT, string author=LOG_DEFAULT, string label=LOG_DEFAULT, string entity=LOG_DEFAULT)
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()
void HandAnimEventChanged(Man p=null, InventoryLocation src=null)
override bool CanPerformEvent()
override InventoryLocation GetDst()
override bool AcquireInventoryJunctureFromServer(notnull Man player)
override bool CheckRequest()
override bool ReserveInventory()
ref InventoryLocation m_Dst2
src of old item in hands
void HandEventCreated(Man p=null, InventoryLocation src=null)
override EntityAI GetSecondSrcEntity()
ref ReplaceItemWithNewLambdaBase m_Lambda
void HandEventHumanCommandActionFinished(Man p=null, InventoryLocation src=null)
void CheckAndExecuteForceStandUp()
void HandEventTake(Man p=null, InventoryLocation src=null)
override bool IsServerSideOnly()
void HandEventReplaced(Man p=null, InventoryLocation src=null)
void HandEventSwap(Man p=null, InventoryLocation src=null, InventoryLocation src2=null, InventoryLocation dst=null, InventoryLocation dst2=null)
void HandEventDestroy(Man p=null, InventoryLocation src=null)
void HandEventMoveTo(Man p=null, InventoryLocation src=null, InventoryLocation dst=null)
destination for item in hands
override string DumpToString()
override void ReadFromContext(ParamsReadContext ctx)
override void ClearInventoryReservation()
override void WriteToContext(ParamsWriteContext ctx)
void HandEvengReplaceWithNewBase(Man p=null, InventoryLocation src=null, ReplaceItemWithNewLambdaBase lambda=NULL)
override bool CheckRequestSrc()
void HandEventDestroyed(Man p=null, InventoryLocation src=null)
override bool CanPerformEventEx(InventoryValidation validation)
void HandEventHumanCommandActionAborted(Man p=null, InventoryLocation src=null)
ref InventoryLocation m_Src2
destination for new item (i.e. hands)
ref InventoryLocation m_Dst
override InventoryLocation GetSecondSrc()
int m_Animation2ID
destination for old item that was in hands
Abstracted event, not to be used, only inherited.
void HandEventDestroyAndReplaceWithNewElsewhere(Man p=null, InventoryLocation src=null, ReplaceItemWithNewLambdaBase lambda=NULL)
void HandEventDrop(Man p=null, InventoryLocation src=null)
override void ReadFromContext(ParamsReadContext ctx)
void HandEventThrow(Man p=null, InventoryLocation src=null)
override void WriteToContext(ParamsWriteContext ctx)
override bool CheckRequestEx(InventoryValidation validation)
void SetForce(vector force)
override bool CanPerformEventEx(InventoryValidation validation)
void HandEventDestroyAndReplaceWithNew(Man p=null, InventoryLocation src=null, ReplaceItemWithNewLambdaBase lambda=NULL)
void HandEventDestroyElsewhereAndReplaceWithNewInHands(Man p=null, InventoryLocation src=null, ReplaceItemWithNewLambdaBase lambda=NULL)
void HandEventForceSwap(Man p=null, InventoryLocation src=null, InventoryLocation src2=null, InventoryLocation dst=null, InventoryLocation dst2=null)
override bool CheckRequest()
override bool CanPerformEvent()
proto native void SetHands(notnull EntityAI parent, EntityAI e)
sets current inventory location type to Hands
static string DumpToStringNullSafe(InventoryLocation loc)
proto native int GetType()
returns type of InventoryLocation
bool ReadFromContext(ParamsReadContext ctx)
proto native EntityAI GetItem()
returns item of current inventory location
InventoryValidationReason m_Reason
static bool IsSyncLogEnable()
static bool IsInventoryHFSMLogEnable()
base class for transformation operations (creating one item from another)
proto bool Write(void value_out)
proto bool Read(void value_in)
DayZPlayerInstanceType
defined in C++
Serializer ParamsReadContext
Serializer ParamsWriteContext
void Error(string err)
Messagebox with error message.
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.