DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
Bot.c
См. документацию.
1
4{
5 bool CheckTrigger () { return false; }
6};
7
9{
12 override bool CheckTrigger () { return null != m_Owner.GetInventory().FindAttachment(InventorySlots.GetSlotIdFromString("Headgear")); }
13};
14
15
18class Bot
19{
21 protected ref BotFSM m_FSM = null;
23
24 protected ref BotStateBase m_IdleState = null;
25
26 void Bot (PlayerBase ow)
27 {
28 m_Owner = ow;
29 }
30
32
33 void Start ()
34 {
35 InitFSM();
36 }
37
38 void Stop ()
39 {
40 m_FSM.Terminate();
41 }
42
43 void StartAction(int action)
44 {
45 switch (action)
46 {
47 case EActions.PLAYER_BOT_STOP_CURRENT:
49 return;
50 }
51
52 ProcessEvent(new BotEventStartDebug(m_Owner, null, action));
53 }
54
55 void OnUpdate (float dt)
56 {
57 m_FSM.GetCurrentState().OnUpdate(dt);
58 }
59
60 // events
67
68 void AddTransition(BotStateBase state, int id)
69 {
70 BotEventStartDebug evt = new BotEventStartDebug(null, null, id);
71
72 m_FSM.AddTransition(new BotTransition(m_IdleState, evt, state, null, new BotGuardDebugEventMatches(evt)));
73
74 m_FSM.AddTransition(new BotTransition(state, ___OK___, m_IdleState));
75 m_FSM.AddTransition(new BotTransition(state, __Fail__, m_IdleState));
76 m_FSM.AddTransition(new BotTransition(state, __Tout__, m_IdleState));
77
78 m_FSM.AddTransition(new BotTransition(state, __Stop__, m_IdleState));
79 }
80
81 void InitFSM ()
82 {
83 m_FSM = new BotFSM();
84
85 // basic states
86 m_IdleState = new BotStateIdle(this, NULL);
87
89
90 AddTransition(new BotStanceRandomizer(this, NULL), EActions.PLAYER_BOT_RANDOMIZE_STANCE);
91 AddTransition(new BotTestSpamUserActions(this, NULL), EActions.PLAYER_BOT_SPAM_USER_ACTIONS);
92 AddTransition(new BotTestAttachAndDropCycle(this, NULL), EActions.PLAYER_BOT_TEST_ATTACH_AND_DROP_CYCLE);
93 AddTransition(new BotTestItemMoveBackAndForth(this, NULL), EActions.PLAYER_BOT_TEST_ITEM_MOVE_BACK_AND_FORTH);
94 AddTransition(new Bot_TestSpawnOpen(this, NULL), EActions.PLAYER_BOT_TEST_SPAWN_OPEN);
95 AddTransition(new Bot_TestSpawnOpenDestroy(this, NULL), EActions.PLAYER_BOT_TEST_SPAWN_OPEN_DESTROY);
96 AddTransition(new Bot_TestSpawnOpenEat(this, NULL), EActions.PLAYER_BOT_TEST_SPAWN_OPEN_EAT);
97 AddTransition(new BotTestSwapG2H(this, NULL), EActions.PLAYER_BOT_TEST_SWAP_G2H);
98 //AddTransition(new BotTestSwapC2H(this, NULL), EActions.PLAYER_BOT_TEST_SWAP_C2H);
99 AddTransition(new BotTestSwapInternal(this, NULL), EActions.PLAYER_BOT_TEST_SWAP_INTERNAL);
100
102
103 m_FSM.SetInitialState(m_IdleState);
104 m_FSM.Start();
105 }
106
108 {
109 if (m_FSM.ProcessEvent(e) == ProcessEventResult.FSM_OK)
110 {
111 botDebugSpam("[botfsm] Processed event e=" + e.ToString());
112 return true;
113 }
114 else
115 {
116 botDebugSpam("[botfsm] FSM refused to process event (no transition): src=" + m_FSM.GetCurrentState().ToString() + " event=" + e.ToString());
117 return false;
118 }
119 }
120};
121
122void botDebugPrint (string s)
123{
124#ifdef BOT_DEBUG
125 PrintToRPT("" + s); // comment/uncomment to hide/see debug logs
126#else
127 //Print("" + s); // comment/uncomment to hide/see debug logs
128#endif
129}
130
131void botDebugSpam (string s)
132{
133#ifdef BOT_DEBUG_SPAM
134 PrintToRPT("" + s); // comment/uncomment to hide/see debug logs
135#else
136 //Print("" + s); // comment/uncomment to hide/see debug logs
137#endif
138}
139
void botDebugSpam(string s)
Определения Bot.c:131
void botDebugPrint(string s)
Определения Bot.c:122
FSMTransition< BotStateBase, BotEventBase, BotActionBase, BotGuardBase > BotTransition
Определения BotFSM.c:7
EActions
Определения EActions.c:2
ProcessEventResult
Определения FSMBase.c:41
ref BotEventBase ___Bgn__
Определения Bot.c:61
void Bot(PlayerBase ow)
Определения Bot.c:26
ref BotStateBase m_IdleState
Определения Bot.c:24
ref BotEventBase ___OK___
Определения Bot.c:63
void Start()
Определения Bot.c:33
PlayerBase m_Owner
Определения Bot.c:20
ref BotEventBase __Stop__
Определения Bot.c:62
void Stop()
Определения Bot.c:38
ref BotEventBase __Fail__
Определения Bot.c:64
void SetInstanceType(DayZPlayerInstanceType t)
Определения Bot.c:31
void InitFSM()
Определения Bot.c:81
void AddTransition(BotStateBase state, int id)
Определения Bot.c:68
ref BotEventBase __Tout__
Определения Bot.c:65
DayZPlayerInstanceType m_InstanceType
Определения Bot.c:22
bool ProcessEvent(BotEventBase e)
Определения Bot.c:107
void OnUpdate(float dt)
Определения Bot.c:55
ref BotFSM m_FSM
Определения Bot.c:21
void StartAction(int action)
Определения Bot.c:43
ref BotEventBase __IChg__
Определения Bot.c:66
represents event that triggers transition from state to state
Определения BotEvents.c:5
Определения BotEvents.c:20
Определения BotEvents.c:19
Определения BotEvents.c:21
Определения BotEvents.c:25
Определения BotEvents.c:16
Определения BotEvents.c:17
Bot Finite State Machine (Hierarchical)
represent weapon state base
Определения Bot_Hunt.c:16
Определения BotStates.c:130
Определения Bot_Tests.c:83
Определения Bot_Tests.c:6
bool CheckTrigger()
Определения Bot.c:5
Определения Bot.c:4
static proto native int GetSlotIdFromString(string slot_name)
converts string to slot_id
provides access to slot configuration
Определения InventorySlots.c:6
PlayerBase m_Owner
Определения Bot.c:10
override bool CheckTrigger()
Определения Bot.c:12
void MyBotTrigger(PlayerBase p)
Определения Bot.c:11
Определения PlayerBaseClient.c:2
DayZPlayerInstanceType
defined in C++
Определения dayzplayer.c:1068
proto void PrintToRPT(void var)
Prints content of variable to RPT file (performance warning - each write means fflush!...