DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
InventoryInputUserData.c
Go to the documentation of this file.
1
3{
5 static void SerializeMove(ParamsWriteContext ctx, int type, notnull InventoryLocation src, notnull InventoryLocation dst)
6 {
8 ctx.Write(type);
9 src.WriteToContext(ctx);
10 dst.WriteToContext(ctx);
11 }
12
13 static void SendInputUserDataMove(int type, notnull InventoryLocation src, notnull InventoryLocation dst)
14 {
15 if (GetGame().IsClient())
16 {
17 syncDebugPrint("[syncinv] t=" + GetGame().GetTime() + "ms sending cmd=" + typename.EnumToString(InventoryCommandType, type) + " src=" + InventoryLocation.DumpToStringNullSafe(src) + " dst=" + InventoryLocation.DumpToStringNullSafe(dst));
19 SerializeMove(ctx, type, src, dst);
20 ctx.Send();
21 }
22 }
23
24 static void SendServerMove(Man player, int type, notnull InventoryLocation src, notnull InventoryLocation dst)
25 {
26 if (GetGame().IsServer())
27 {
28 syncDebugPrint("[syncinv] server sending cmd=" + typename.EnumToString(InventoryCommandType, type) + " src=" + InventoryLocation.DumpToStringNullSafe(src) + " dst=" + InventoryLocation.DumpToStringNullSafe(dst));
30 SerializeMove(ctx, type, src, dst);
31 GameInventory.ServerLocationSyncMoveEntity(player, src.GetItem(), ctx);
32 }
33 }
35
37 static void SerializeSwap(ParamsWriteContext ctx, notnull InventoryLocation src1, notnull InventoryLocation src2, notnull InventoryLocation dst1, notnull InventoryLocation dst2, bool skippedSwap)
38 {
41 src1.WriteToContext(ctx);
42 src2.WriteToContext(ctx);
43 dst1.WriteToContext(ctx);
44 dst2.WriteToContext(ctx);
45 ctx.Write(skippedSwap);
46 }
47
48 static void SendInputUserDataSwap(notnull InventoryLocation src1, notnull InventoryLocation src2, notnull InventoryLocation dst1, notnull InventoryLocation dst2, bool skippedSwap = false)
49 {
50 if (GetGame().IsClient())
51 {
52 syncDebugPrint("[syncinv] t=" + GetGame().GetTime() + "ms sending cmd=SWAP src1=" + InventoryLocation.DumpToStringNullSafe(src1) + " src2=" + InventoryLocation.DumpToStringNullSafe(src2) + " dst1=" + InventoryLocation.DumpToStringNullSafe(dst1) + " dst2=" + InventoryLocation.DumpToStringNullSafe(dst2));
54 SerializeSwap(ctx, src1, src2, dst1, dst2, skippedSwap);
55 ctx.Send();
56 }
57 }
58
59 static void SendServerSwap(notnull InventoryLocation src1, notnull InventoryLocation src2, notnull InventoryLocation dst1, notnull InventoryLocation dst2, bool skippedSwap = false)
60 {
61 if (GetGame().IsServer())
62 {
63 syncDebugPrint("[syncinv] server sending cmd=SWAP src1=" + InventoryLocation.DumpToStringNullSafe(src1) + " src2=" + InventoryLocation.DumpToStringNullSafe(src2) + " dst1=" + InventoryLocation.DumpToStringNullSafe(dst1) + " dst2=" + InventoryLocation.DumpToStringNullSafe(dst2));
65 SerializeSwap(ctx, src1, src2, dst1, dst2, skippedSwap);
66 GameInventory.ServerLocationSwap(src1, src2, dst1, dst2, ctx);
67 }
68 }
70
73 {
75 ctx.Write(InventoryCommandType.HAND_EVENT);
76 e.WriteToContext(ctx);
77 }
78
80 {
81 if (GetGame().IsClient())
82 {
83 syncDebugPrint("[syncinv] t=" + GetGame().GetTime() + "ms SendInputUserDataHandEvent e=" + e.DumpToString());
85 SerializeHandEvent(ctx, e);
86 ctx.Send();
87 }
88 }
89
90 static void SendServerHandEventViaInventoryCommand(notnull Man player, HandEventBase e)
91 {
92 // Warning: this uses NetworkMessageInventoryCommand
93 if (GetGame().IsServer())
94 {
95 if (e.IsServerSideOnly())
96 Error("[syncinv] SendServerHandEvent - called on server side event only, e=" + e.DumpToString());
97 if (player.IsAlive())
98 Error("[syncinv] SendServerHandEvent - called on living thing.. server hand command is only for dead people, e=" + e.DumpToString());
99 syncDebugPrint("[syncinv] SendServerHandEventViaInventoryCommand SendInputUserDataHandEvent e=" + e.DumpToString());
101 SerializeHandEvent(ctx, e);
102 GameInventory.ServerHandEvent(player, e.GetSrcEntity(), ctx);
103 }
104 }
106
108 {
110 ctx.Write(InventoryCommandType.DESTROY);
111 src.WriteToContext(ctx);
112 }
113
115 {
116 if (GetGame().IsClient())
117 {
118 syncDebugPrint("[syncinv] SendInputUserDataDestroy src=" + InventoryLocation.DumpToStringNullSafe(src));
120 SerializeDestroy(ctx, src);
121 ctx.Send();
122 }
123 }
124};
125
void syncDebugPrint(string s)
Definition Debug.c:1
InventoryCommandType
Definition Inventory.c:3
const int INPUT_UDT_INVENTORY
Definition _constants.c:9
float GetTime()
script counterpart to engine's class Inventory
Definition Inventory.c:77
static proto native bool ServerLocationSwap(notnull InventoryLocation src1, notnull InventoryLocation src2, notnull InventoryLocation dst1, notnull InventoryLocation dst2, ParamsWriteContext ctx)
swaps two entities
static proto native bool ServerHandEvent(notnull Man player, notnull EntityAI item, ParamsWriteContext ctx)
hand event to clients
static proto native bool ServerLocationSyncMoveEntity(Man player, notnull EntityAI item, ParamsWriteContext ctx)
synchronously removes item from current inventory location and adds it to destination + sync via inve...
Abstracted event, not to be used, only inherited.
override string DumpToString()
override void WriteToContext(ParamsWriteContext ctx)
override bool IsServerSideOnly()
static void SerializeSwap(ParamsWriteContext ctx, notnull InventoryLocation src1, notnull InventoryLocation src2, notnull InventoryLocation dst1, notnull InventoryLocation dst2, bool skippedSwap)
swap
static void SerializeDestroy(ParamsWriteContext ctx, notnull InventoryLocation src)
static void SendServerSwap(notnull InventoryLocation src1, notnull InventoryLocation src2, notnull InventoryLocation dst1, notnull InventoryLocation dst2, bool skippedSwap=false)
static void SendInputUserDataHandEvent(HandEventBase e)
static void SendServerHandEventViaInventoryCommand(notnull Man player, HandEventBase e)
static void SendServerMove(Man player, int type, notnull InventoryLocation src, notnull InventoryLocation dst)
static void SendInputUserDataDestroy(notnull InventoryLocation src)
static void SendInputUserDataSwap(notnull InventoryLocation src1, notnull InventoryLocation src2, notnull InventoryLocation dst1, notnull InventoryLocation dst2, bool skippedSwap=false)
static void SerializeHandEvent(ParamsWriteContext ctx, HandEventBase e)
hand
static void SendInputUserDataMove(int type, notnull InventoryLocation src, notnull InventoryLocation dst)
static void SerializeMove(ParamsWriteContext ctx, int type, notnull InventoryLocation src, notnull InventoryLocation dst)
move
InventoryLocation.
static string DumpToStringNullSafe(InventoryLocation loc)
proto native void Send()
Serialization general interface. Serializer API works with:
Definition Serializer.c:56
proto bool Write(void value_out)
proto native CGame GetGame()
void Error(string err)
Messagebox with error message.
Definition EnDebug.c:90