DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
Bot_TestSpamUserActions.c
См. документацию.
1#ifdef ROBOCLIENT
2class BotTestSpamUserActions_Start : BotTimedWait
3{
4 override void OnEntry (BotEventBase e)
5 {
6 super.OnEntry(e);
7
8 }
9
10 override void OnExit (BotEventBase e)
11 {
12 botDebugPrint("[bot] + " + m_Owner + "BotTestSpamUserActions_Start::OnExit");
13
14 /*if (g_Game.IsServer() && g_Game.IsMultiplayer())
15 {
16 botDebugPrint("[bot] + " + m_Owner + "BotTestSpamUserActions_Start spamming!");
17 for (int i = 0; i < 10000; ++i)
18 Print("Lovely SPAAAAAM!");
19 }*/
20
21 super.OnExit(e);
22 }
23
24}
25
26class BotTestSpamUserActions_GetEntityFromSlot : BotTimedWait
27{
28 EntityAI m_Entity = null;
29 bool m_Run = false;
30 int m_RunStage = 0;
31 ref InventoryLocation m_Src = new InventoryLocation;
32
33 override void OnEntry (BotEventBase e)
34 {
35 m_Entity = m_Owner.GetInventory().FindAttachment(InventorySlots.GetSlotIdFromString("Legs"));
36 botDebugPrint("[bot] + " + m_Owner + "BotTestSpamUserActions_GetEntityFromSlot item=" + m_Entity);
37
38 GameInventory.SetGroundPosByOwner(m_Owner, m_Entity, m_Src);
39 /*if (!m_Entity.GetInventory().GetCurrentInventoryLocation(m_Src))
40 {
41 Error("NI!");
42 }*/
43
44 if (!g_Game.IsDedicatedServer())
45 {
46 m_Entity = m_Owner.GetInventory().FindAttachment(InventorySlots.GetSlotIdFromString("Legs"));
48 }
49
50 super.OnEntry(e);
51 }
52
53 override void OnExit (BotEventBase e)
54 {
55 m_Entity = null;
56
57 super.OnExit(e);
58 }
59
60 override void OnUpdate (float dt)
61 {
62 super.OnUpdate(dt);
63
64 if (!g_Game.IsDedicatedServer())
65 {
66 if (m_Run && m_Entity)
67 {
68
69 switch (m_RunStage)
70 {
71 case 0:
72 botDebugPrint("[bot] + " + m_Owner + " STS = " + m_Owner.GetSimulationTimeStamp() + " Stage=" + m_RunStage + " item=" + m_Entity);
73 ScriptInputUserData ctx = new ScriptInputUserData;
74 HandEventTake e = new HandEventTake(m_Owner, m_Src);
75 InventoryInputUserData.SerializeHandEvent(ctx, e);
76 ctx.Send();
77 break;
78
79 case 1:
80 botDebugPrint("[bot] + " + m_Owner + " STS = " + m_Owner.GetSimulationTimeStamp() + " Stage=" + m_RunStage + " item=" + m_Entity);
81 ScriptInputUserData ctx1 = new ScriptInputUserData;
82 HandEventTake e1 = new HandEventTake(m_Owner, m_Src);
83 InventoryInputUserData.SerializeHandEvent(ctx1, e1);
84 ctx1.Send();
85 break;
86
87 case 5:
88 botDebugPrint("[bot] + " + m_Owner + " STS = " + m_Owner.GetSimulationTimeStamp() + " Stage=" + m_RunStage + " item=" + m_Entity);
89 ScriptInputUserData ctx2 = new ScriptInputUserData;
90 InventoryLocation dst = new InventoryLocation;
91 dst.SetAttachment(m_Owner, m_Entity, InventorySlots.GetSlotIdFromString("Legs"));
92 InventoryInputUserData.SerializeMove(ctx2, InventoryCommandType.SYNC_MOVE, m_Src, dst);
93 ctx2.Send();
94 break;
95
96 case 10:
97 botDebugPrint("[bot] + " + m_Owner + " STS = " + m_Owner.GetSimulationTimeStamp() + " Stage=" + m_RunStage + " item=" + m_Entity);
98 ScriptInputUserData ctx3 = new ScriptInputUserData;
99 InventoryLocation dst2 = new InventoryLocation;
100 dst2.SetAttachment(m_Owner, m_Entity, InventorySlots.GetSlotIdFromString("Legs"));
101 InventoryInputUserData.SerializeMove(ctx3, InventoryCommandType.SYNC_MOVE, m_Src, dst2);
102 ctx3.Send();
103 break;
104
105 /*
106 case 0:
107 botDebugPrint("[bot] + " + m_Owner + "Stage0 item=" + m_Entity);
108 m_Owner.PredictiveTakeEntityToHands(m_Entity);
109 break;
110
111 case 1:
112 botDebugPrint("[bot] + " + m_Owner + "Stage1 item=" + m_Entity);
113 m_Owner.PredictiveTakeEntityToHands(m_Entity);
114 break;
115
116 case 2:
117 botDebugPrint("[bot] + " + m_Owner + "Stage2 item=" + m_Entity);
118 m_Owner.PredictiveTakeEntityAsAttachmentEx(m_Entity, InventorySlots.GetSlotIdFromString("Legs"));
119 break;
120
121 case 3:
122 botDebugPrint("[bot] + " + m_Owner + "Stage3 item=" + m_Entity);
123 m_Owner.PredictiveTakeEntityAsAttachmentEx(m_Entity, InventorySlots.GetSlotIdFromString("Legs"));
124 break;*/
125 }
126
127 ++m_RunStage;
128 }
129 }
130 }
131
132 override void OnTimeout ()
133 {
134 super.OnTimeout();
135
136 botDebugPrint("[bot] + " + m_Owner + "BotTestSpamUserActions_GetEntityFromSlot item=" + m_Entity);
137
138 if (m_Entity && m_Run == false)
139 {
140 m_Run = true;
141 m_RunStage = 0;
142 }
143 }
144}
145
146
147class BotTestSpamUserActions : BotStateBase
148{
150 ref BotTestSpamUserActions_Start m_Start;
151 ref BotTestSpamUserActions_GetEntityFromSlot m_GetRef;
152 //ref BotTimedWait m_Wait;
153
154 void BotTestSpamUserActions (Bot bot = NULL, BotStateBase parent = NULL)
155 {
156 // setup nested state machine
157 m_FSM = new BotFSM(this); // @NOTE: set owner of the submachine fsm
158
159 m_Start = new BotTestSpamUserActions_Start(m_Bot, this, 1.0);
160 m_GetRef = new BotTestSpamUserActions_GetEntityFromSlot(m_Bot, this, 2.0);
161
162 // events
163 BotEventBase __EntWait__ = new BotEventWaitTimeout;
164
165 // transitions
166 m_FSM.AddTransition(new BotTransition( m_Start, __EntWait__, m_GetRef));
167
168 m_FSM.SetInitialState(m_Start);
169 }
170
171 override void OnEntry (BotEventBase e)
172 {
173 m_Entity = null;
174
175 if (g_Game.IsServer())
176 {
177 m_Owner.GetInventory().CreateAttachment("PolicePantsOrel"); // no assign to m_Entity
178 botDebugPrint("[bot] + " + m_Owner + " created attachment item=" + m_Entity);
179 }
180
181 super.OnEntry(e);
182 }
183
184 override void OnExit (BotEventBase e)
185 {
186 m_Entity = null;
187
188 super.OnExit(e);
189 }
190
191 override void OnUpdate (float dt)
192 {
193 super.OnUpdate(dt);
194 }
195}
196#endif
InventoryCommandType
class LogManager EntityAI
Entity m_Entity
Определения CachedEquipmentStorageBase.c:16
DayZGame g_Game
Определения DayZGame.c:4074
ref InventoryLocation m_Src
Определения Hand_Events.c:43
HandStateEquipped OnEntry
Определения WeaponChambering.c:292
enum ProcessDirectDamageFlags m_Owner
class WeaponChambering_Chamber_OnEntry extends WeaponChambering_Base OnExit
Определения WeaponChambering.c:352
proto native GameInventory GetInventory()
override bool PredictiveDropEntity(notnull EntityAI item)
Определения 3_Game/DayZ/Entities/Man.c:128
proto native EntityAI FindAttachment(int slot)
Returns attached entity in slot (you can use InventorySlots.GetSlotIdFromString(name) to get slot id)
override void OnEntry(HandEventBase e)
Определения Hand_States.c:34
proto native void SetAttachment(notnull EntityAI parent, EntityAI e, int slotId)
sets current inventory location type to Attachment with slot id set to <slotId>
proto native void Send()
proto native void OnUpdate()
Определения 3_Game/DayZ/tools/tools.c:349