Dayz
Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Toggle main menu visibility
Loading...
Searching...
No Matches
bot.c
Go to the documentation of this file.
1
3
class
BotTrigger
4
{
5
bool
CheckTrigger
() {
return
false
; }
6
};
7
8
class
MyBotTrigger
:
BotTrigger
9
{
10
PlayerBase
m_Owner
;
11
void
MyBotTrigger
(
PlayerBase
p) {
m_Owner
= p; }
12
override
bool
CheckTrigger
() {
return
null !=
m_Owner
.GetInventory().FindAttachment(
InventorySlots
.
GetSlotIdFromString
(
"Headgear"
)); }
13
};
14
15
18
class
Bot
19
{
20
PlayerBase
m_Owner
= null;
21
protected
ref
BotFSM
m_FSM
= null;
22
protected
DayZPlayerInstanceType
m_InstanceType
=
DayZPlayerInstanceType
.INSTANCETYPE_CLIENT;
23
24
protected
ref
BotStateBase
m_IdleState
= null;
25
26
void
Bot
(
PlayerBase
ow)
27
{
28
m_Owner
= ow;
29
}
30
31
void
SetInstanceType
(
DayZPlayerInstanceType
t) {
m_InstanceType
= t; }
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:
48
ProcessEvent
(
new
BotEventStop
(
m_Owner
, null));
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
61
ref
BotEventBase
___Bgn__
=
new
BotEventStart
;
62
ref
BotEventBase
__Stop__
=
new
BotEventStop
;
63
ref
BotEventBase
___OK___
=
new
BotEventEndOK
;
64
ref
BotEventBase
__Fail__
=
new
BotEventEndFail
;
65
ref
BotEventBase
__Tout__
=
new
BotEventEndTimeout
;
66
ref
BotEventBase
__IChg__
=
new
BotEventOnItemInHandsChanged
;
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
107
bool
ProcessEvent
(
BotEventBase
e)
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
122
void
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
131
void
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
botDebugSpam
void botDebugSpam(string s)
Definition
bot.c:131
botDebugPrint
void botDebugPrint(string s)
Definition
bot.c:122
BotTransition
FSMTransition< BotStateBase, BotEventBase, BotActionBase, BotGuardBase > BotTransition
Definition
botfsm.c:7
Bot_TestSpawnOpen
Definition
bot_testspawnandopencan.c:241
BotEventBase
represents event that triggers transition from state to state
Definition
botevents.c:5
BotEventEndFail
Definition
botevents.c:20
BotEventEndOK
Definition
botevents.c:19
BotEventEndTimeout
Definition
botevents.c:21
BotEventOnItemInHandsChanged
Definition
botevents.c:22
BotEventStartDebug
Definition
botevents.c:25
BotEventStart
Definition
botevents.c:16
BotEventStop
Definition
botevents.c:17
BotFSM
Bot Finite State Machine (Hierarchical).
Bot::Start
void Start()
Definition
bot.c:33
Bot::InitFSM
void InitFSM()
Definition
bot.c:81
Bot::Stop
void Stop()
Definition
bot.c:38
Bot::__Tout__
ref BotEventBase __Tout__
Definition
bot.c:65
Bot::AddTransition
void AddTransition(BotStateBase state, int id)
Definition
bot.c:68
Bot::__Stop__
ref BotEventBase __Stop__
Definition
bot.c:62
Bot::m_FSM
ref BotFSM m_FSM
Definition
bot.c:21
Bot::__IChg__
ref BotEventBase __IChg__
Definition
bot.c:66
Bot::ProcessEvent
bool ProcessEvent(BotEventBase e)
Definition
bot.c:107
Bot::SetInstanceType
void SetInstanceType(DayZPlayerInstanceType t)
Definition
bot.c:31
Bot::m_Owner
PlayerBase m_Owner
Definition
bot.c:20
Bot::m_IdleState
ref BotStateBase m_IdleState
Definition
bot.c:24
Bot::StartAction
void StartAction(int action)
Definition
bot.c:43
Bot::___OK___
ref BotEventBase ___OK___
Definition
bot.c:63
Bot::__Fail__
ref BotEventBase __Fail__
Definition
bot.c:64
Bot::m_InstanceType
DayZPlayerInstanceType m_InstanceType
Definition
bot.c:22
Bot::OnUpdate
void OnUpdate(float dt)
Definition
bot.c:55
Bot::___Bgn__
ref BotEventBase ___Bgn__
Definition
bot.c:61
Bot::Bot
void Bot(PlayerBase ow)
Definition
bot.c:26
BotStateBase
represent weapon state base
Definition
bot_hunt.c:16
BotStateIdle
Definition
botstates.c:130
BotTestSpamUserActions
Definition
bot_testspamuseractions.c:148
BotTestSwapG2H
Definition
bot_tests.c:84
BotTestSwapInternal
Definition
bot_tests.c:6
BotTrigger
Definition
bot.c:4
BotTrigger::CheckTrigger
bool CheckTrigger()
Definition
bot.c:5
InventorySlots
provides access to slot configuration
Definition
inventoryslots.c:6
InventorySlots::GetSlotIdFromString
static proto native int GetSlotIdFromString(string slot_name)
MyBotTrigger::CheckTrigger
override bool CheckTrigger()
Definition
bot.c:12
MyBotTrigger::MyBotTrigger
void MyBotTrigger(PlayerBase p)
Definition
bot.c:11
MyBotTrigger::m_Owner
PlayerBase m_Owner
Definition
bot.c:10
PlayerBase
Definition
playerbaseclient.c:2
DayZPlayerInstanceType
DayZPlayerInstanceType
defined in C++
Definition
dayzplayer.c:1071
EActions
EActions
Definition
eactions.c:2
ProcessEventResult
ProcessEventResult
Definition
fsmbase.c:41
PrintToRPT
proto void PrintToRPT(void var)
Prints content of variable to RPT file (performance warning - each write means fflush!...
Games
Dayz
scripts
4_world
systems
bot
bot.c
Generated by
1.17.0