DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
Bot_TestSpawnAndOpenCan.c
См. документацию.
2
3class BotSpawnEntityInHands extends BotStateBase
4{
5 string m_Type;
6
7 void BotSpawnEntityInHands (Bot bot = NULL, BotStateBase parent = NULL, string new_type = "")
8 {
9 if (new_type == string.Empty)
10 m_Type = "TunaCan";
11 else
12 m_Type = new_type;
13 }
14
15 override void OnEntry (BotEventBase e)
16 {
17 super.OnEntry(e);
18
19 if (m_Owner.GetInstanceType() == DayZPlayerInstanceType.INSTANCETYPE_SERVER)
20 {
21 m_Owner.GetHumanInventory().CreateInHands(m_Type);
22 }
23 }
24
25 override void OnExit (BotEventBase e) { super.OnExit(e); }
26
27 override void OnUpdate (float dt)
28 {
29 super.OnUpdate(dt);
30
31 EntityAI inHands = m_Owner.GetHumanInventory().GetEntityInHands();
32 if (inHands)
33 {
34 botDebugPrint("[bot] + " + m_Owner + " hand item=" + inHands + " bot=" + m_Owner);
35 m_Bot.ProcessEvent(new BotEventEntityInHands(m_Owner, inHands));
36 }
37 }
38};
39
41
42class BotOpenEntityInHands extends BotStateBase
43{
45
46 override void OnEntry (BotEventBase e)
47 {
48 super.OnEntry(e);
49
50 if (m_Owner.GetInstanceType() == DayZPlayerInstanceType.INSTANCETYPE_SERVER)
51 {
53 if (ev_ih)
54 {
55 m_Entity = ev_ih.m_Entity;
57 if (b)
58 {
59 botDebugPrint("[bot] + " + m_Owner + " will open edible item=" + b + " bot=" + m_Owner);
60 b.Open();
61 }
62 }
63 }
64 }
65
66 override void OnAbort (BotEventBase e) { super.OnAbort(e); }
67
68 override void OnExit (BotEventBase e)
69 {
70 super.OnExit(e);
71 }
72
73 override void OnUpdate (float dt)
74 {
75 super.OnUpdate(dt);
76
77 EntityAI inHands = m_Owner.GetHumanInventory().GetEntityInHands();
78 botDebugSpam("[bot] + " + m_Owner + " wait for opened item inHands=" + inHands + " bot=" + m_Owner);
79 if (inHands)
80 {
81 string t_str = inHands.GetType();
82 //string t_str = t.ToString();
83 if (t_str.IndexOf("_Opened") != -1)
84 {
85 botDebugPrint("[bot] + " + m_Owner + " opened item=" + inHands + " bot=" + m_Owner);
86 m_Bot.ProcessEvent(new BotEventEntityInHandsOpened(m_Owner, inHands));
87 }
88 }
89 }
90};
91
92
94{
95 string m_Type;
97 ref BotOpenEntityInHands m_Opening;
98
99 void Bot_TestSpawnOpen (Bot bot = NULL, BotStateBase parent = NULL, string new_type = "")
100 {
101 m_Type = new_type;
102
103 // setup nested state machine
104 m_FSM = new BotFSM(this); // @NOTE: set owner of the submachine fsm
105
107 m_Opening = new BotOpenEntityInHands(m_Bot, this);
108
109 // events
110 BotEventBase __EntInH__ = new BotEventEntityInHands;
111
112 // transitions
113 m_FSM.AddTransition(new BotTransition( m_Spawning, __EntInH__, m_Opening));
114 //m_FSM.AddTransition(new BotTransition( m_Opening, __EntAtt__, m_Eating));
115 //m_FSM.AddTransition(new BotTransition( m_Eating, __EntAtt__, m_Eating));
116
117 m_FSM.SetInitialState(m_Spawning);
118 }
119
120 override void OnEntry (BotEventBase e) { super.OnEntry(e); }
121 override void OnExit (BotEventBase e) { super.OnExit(e); }
122 override void OnUpdate (float dt) { super.OnUpdate(dt); }
123};
124
125
127
128class BotWaitForEmptyHands extends BotStateBase
129{
130 override void OnEntry (BotEventBase e) { super.OnEntry(e); }
131 override void OnAbort (BotEventBase e) { super.OnAbort(e); }
132 override void OnExit (BotEventBase e) { super.OnExit(e); }
133
134 override void OnUpdate (float dt)
135 {
136 super.OnUpdate(dt);
137
138 EntityAI inHands = m_Owner.GetHumanInventory().GetEntityInHands();
139 botDebugSpam("[bot] + " + m_Owner + " waiting for empty hands, inHands=" + inHands + " bot=" + m_Owner);
140 if (!inHands)
141 {
142 botDebugPrint("[bot] + " + m_Owner + " hand slot empty. bot=" + m_Owner);
143 m_Bot.ProcessEvent(new BotEventHandsEmpty(m_Owner, inHands));
144 }
145 }
146};
147
149{
150 /*override void OnExit (BotEventBase e)
151 {
152 super.OnExit(e);
153 m_Bot.ProcessEvent(new BotEventEndOK(m_Owner));
154 }*/
155};
156
157
158class BotDropEntityInHands extends BotWaitForChangeInHands
159{
161
162 override void OnEntry (BotEventBase e)
163 {
164 super.OnEntry(e);
165
166
167 EntityAI inHands = m_Owner.GetHumanInventory().GetEntityInHands();
168 if (inHands)
169 {
170 botDebugPrint("[bot] + " + m_Owner + " dropping item=" + inHands + " bot=" + m_Owner);
171 if (m_Owner.GetInstanceType() == DayZPlayerInstanceType.INSTANCETYPE_CLIENT)
172 m_Owner.PredictiveDropEntity(inHands);
173 //m_Owner.LocalDropEntity(inHands);
174 }
175 }
176
177 override void OnAbort (BotEventBase e) { super.OnAbort(e); }
178 override void OnExit (BotEventBase e) { super.OnExit(e); }
179 override void OnUpdate (float dt) { super.OnUpdate(dt); }
180};
181
182class BotEatEntityInHands extends BotWaitForChangeInHands
183{
185
186 override void OnEntry (BotEventBase e)
187 {
188 super.OnEntry(e);
189
190 EntityAI inHands = m_Owner.GetHumanInventory().GetEntityInHands();
191 if (inHands)
192 {
193 botDebugPrint("[bot] + " + m_Owner + " eating item=" + inHands + " bot=" + m_Owner);
194 if (m_Owner.GetInstanceType() == DayZPlayerInstanceType.INSTANCETYPE_CLIENT)
195 {
196#ifdef BOT
197 ActionManagerBase mgr = m_Owner.GetActionManager();
198 ActionManagerClient cli_mgr = ActionManagerClient.Cast(mgr);
199 if (cli_mgr)
200 {
201 ActionTarget target;
202 target = new ActionTarget(inHands, null, -1, vector.Zero, -1);
203 cli_mgr.PerformAction(AT_EAT, target, inHands);
204 }
205#endif
206 }
207 }
208 }
209
210 override void OnAbort (BotEventBase e) { super.OnAbort(e); }
211 override void OnExit (BotEventBase e) { super.OnExit(e); }
212 override void OnUpdate (float dt) { super.OnUpdate(dt); }
213};
214
215
216
217class BotDestroyEntityInHands extends BotWaitForChangeInHands
218{
220
221 override void OnEntry (BotEventBase e)
222 {
223 super.OnEntry(e);
224
225 EntityAI inHands = m_Owner.GetHumanInventory().GetEntityInHands();
226 if (inHands)
227 {
228 botDebugPrint("[bot] + " + m_Owner + " deleting item=" + inHands + " bot=" + m_Owner);
229 if (m_Owner.GetInstanceType() == DayZPlayerInstanceType.INSTANCETYPE_SERVER)
230 inHands.Delete();
231 }
232 }
233
234 override void OnAbort (BotEventBase e) { super.OnAbort(e); }
235 override void OnExit (BotEventBase e) { super.OnExit(e); }
236 override void OnUpdate (float dt) { super.OnUpdate(dt); }
237};
238
239
241{
242 ref BotDropEntityInHands m_Dropping;
243
244 void Bot_TestSpawnOpenDrop (Bot bot = NULL, BotStateBase parent = NULL, string new_type = "")
245 {
246 m_Dropping = new BotDropEntityInHands(m_Bot, this);
247
248 // events
251
252 // transitions
253 m_FSM.AddTransition(new BotTransition( m_Opening, __EntOpn__, m_Dropping));
254 m_FSM.AddTransition(new BotTransition( m_Dropping, __HndChg__, NULL));
255 }
256
257 override void OnEntry (BotEventBase e) { super.OnEntry(e); }
258 override void OnExit (BotEventBase e) { super.OnExit(e); }
259 override void OnUpdate (float dt) { super.OnUpdate(dt); }
260};
261
262class Bot_TestSpawnOpenDestroy extends Bot_TestSpawnOpen
263{
264 ref BotDestroyEntityInHands m_Destroying;
265
266 void Bot_TestSpawnOpenDestroy (Bot bot = NULL, BotStateBase parent = NULL, string new_type = "")
267 {
268 m_Destroying = new BotDestroyEntityInHands(m_Bot, this);
269
270 // events
273
274 // transitions
275 m_FSM.AddTransition(new BotTransition( m_Opening, __EntOpn__, m_Destroying));
276 m_FSM.AddTransition(new BotTransition( m_Destroying, __HndChg__, NULL));
277 }
278
279 override void OnEntry (BotEventBase e) { super.OnEntry(e); }
280 override void OnExit (BotEventBase e) { super.OnExit(e); }
281 override void OnUpdate (float dt) { super.OnUpdate(dt); }
282};
283
284class Bot_TestSpawnOpenEat extends Bot_TestSpawnOpen
285{
286 ref BotEatEntityInHands m_Eating;
287
288 void Bot_TestSpawnOpenEat (Bot bot = NULL, BotStateBase parent = NULL, string new_type = "")
289 {
290 m_Eating = new BotEatEntityInHands(m_Bot, this);
291
292 // events
295
296 // transitions
297 m_FSM.AddTransition(new BotTransition( m_Opening, __EntOpn__, m_Eating));
298 m_FSM.AddTransition(new BotTransition( m_Eating, __HndChg__, NULL));
299 }
300
301 override void OnEntry (BotEventBase e)
302 {
303 super.OnEntry(e);
304 }
305
306 override void OnExit (BotEventBase e)
307 {
308 super.OnExit(e);
309 }
310
311 override void OnUpdate (float dt)
312 {
313 super.OnUpdate(dt);
314 }
315};
316
class LogManager EntityAI
eBleedingSourceType m_Type
Определения BleedingSource.c:25
EntityAI m_Entity
Определения ActionDebug.c:11
void ActionManagerBase(PlayerBase player)
Определения ActionManagerBase.c:63
class ActionTargets ActionTarget
void botDebugSpam(string s)
Определения Bot.c:131
void botDebugPrint(string s)
Определения Bot.c:122
FSMTransition< BotStateBase, BotEventBase, BotActionBase, BotGuardBase > BotTransition
Определения BotFSM.c:7
Empty
Определения Hand_States.c:14
enum ProcessDirectDamageFlags m_Owner
void Bot_TestSpawnOpenDestroy(Bot bot=NULL, BotStateBase parent=NULL, string new_type="")
Определения Bot_TestSpawnAndOpenCan.c:266
ref BotDestroyEntityInHands m_Destroying
Определения Bot_TestSpawnAndOpenCan.c:264
override void OnExit(BotEventBase e)
Определения Bot_TestSpawnAndOpenCan.c:258
override void OnUpdate(float dt)
Определения Bot_TestSpawnAndOpenCan.c:259
void Bot_TestSpawnOpenDrop(Bot bot=NULL, BotStateBase parent=NULL, string new_type="")
Определения Bot_TestSpawnAndOpenCan.c:244
ref BotEatEntityInHands m_Eating
Определения Bot_TestSpawnAndOpenCan.c:286
ref BotDropEntityInHands m_Dropping
Определения Bot_TestSpawnAndOpenCan.c:242
void Bot_TestSpawnOpenEat(Bot bot=NULL, BotStateBase parent=NULL, string new_type="")
Определения Bot_TestSpawnAndOpenCan.c:288
override void OnEntry(BotEventBase e)
Определения Bot_TestSpawnAndOpenCan.c:257
EntityAI m_Entity
Определения BotEvents.c:7
void BotEventBase(PlayerBase p=NULL, EntityAI e=NULL)
Определения BotEvents.c:9
represents event that triggers transition from state to state
Определения BotEvents.c:5
Bot Finite State Machine (Hierarchical)
Определения Bot.c:19
void BotSpawnEntityInHands(Bot bot=NULL, BotStateBase parent=NULL, string new_type="")
Определения Bot_TestSpawnAndOpenCan.c:7
PlayerBase m_Owner
Определения BotStates.c:12
void BotStateBase(Bot bot=NULL, BotStateBase parent=NULL)
nested state machine (or null)
Определения BotStates.c:17
ref BotFSM m_FSM
hierarchical parent state of this state (or null)
Определения BotStates.c:15
override void OnUpdate(float dt)
Определения Bot_TestSpawnAndOpenCan.c:27
ref BotSpawnEntityInHands m_Spawning
Определения Bot_TestSpawnAndOpenCan.c:96
override void OnEntry(BotEventBase e)
Определения Bot_TestSpawnAndOpenCan.c:15
override void OnAbort(BotEventBase e)
Определения Bot_TestSpawnAndOpenCan.c:66
override void OnExit(BotEventBase e)
Определения Bot_TestSpawnAndOpenCan.c:25
EntityAI m_Entity
Определения Bot_TestAttachAndDropCycle.c:7
void Bot_TestSpawnOpen(Bot bot=NULL, BotStateBase parent=NULL, string new_type="")
Определения Bot_TestSpawnAndOpenCan.c:99
string m_Type
Определения Bot_TestSpawnAndOpenCan.c:5
ref BotOpenEntityInHands m_Opening
Определения Bot_TestSpawnAndOpenCan.c:97
Bot m_Bot
man that this state belongs to
Определения BotStates.c:13
represent weapon state base
Определения Bot_Hunt.c:16
override void OnExit(BotEventBase e)
Определения Bot_TestSpawnAndOpenCan.c:178
override void OnEntry(BotEventBase e)
Определения Bot_TestSpawnAndOpenCan.c:162
override void OnUpdate(float dt)
Определения Bot_TestSpawnAndOpenCan.c:179
override void OnAbort(BotEventBase e)
Определения Bot_TestSpawnAndOpenCan.c:177
Определения Edible_Base.c:2
Определения Building.c:6
static const vector Zero
Определения EnConvert.c:110
Определения EnConvert.c:106
DayZPlayerInstanceType
defined in C++
Определения dayzplayer.c:1068
proto native int IndexOf(string sample)
Finds 'sample' in 'str'. Returns -1 when not found.