Arma Reforger Explorer
1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Toggle main menu visibility
Loading...
Searching...
No Matches
SCR_MineAddFlagAction.c
Go to the documentation of this file.
1
//------------------------------------------------------------------------------------------------
2
class
SCR_MineAddFlagAction
:
ScriptedUserAction
3
{
4
[
Attribute
(
"0 0 0.19"
)]
5
protected
vector
m_vFlagOffset
;
6
7
//------------------------------------------------------------------------------------------------
8
protected
IEntity
FindFlagInInventory
(
InventoryStorageManagerComponent
storageManager)
9
{
10
return
storageManager.FindItemWithComponents({SCR_MineFlagComponent},
EStoragePurpose
.PURPOSE_ANY);
11
}
12
13
//------------------------------------------------------------------------------------------------
14
override
event
void
PerformAction
(
IEntity
pOwnerEntity,
IEntity
pUserEntity)
15
{
16
RplComponent userRplComponent =
SCR_EntityHelper
.
GetEntityRplComponent
(pUserEntity);
17
if
(!userRplComponent)
18
return
;
19
20
RplComponent ownerRplComponent = RplComponent.Cast(pOwnerEntity.
FindComponent
(RplComponent));
21
if
(!ownerRplComponent)
22
return
;
23
24
InventoryStorageManagerComponent
storageManager =
InventoryStorageManagerComponent
.Cast(pUserEntity.
FindComponent
(
InventoryStorageManagerComponent
));
25
if
(!storageManager)
26
return
;
27
28
IEntity
flag =
FindFlagInInventory
(storageManager);
29
if
(!flag)
30
return
;
31
32
SCR_PlaceableInventoryItemComponent
itemComponent =
SCR_PlaceableInventoryItemComponent
.Cast(flag.
FindComponent
(
SCR_PlaceableInventoryItemComponent
));
33
if
(!itemComponent)
34
return
;
35
36
ChimeraCharacter
character =
ChimeraCharacter
.Cast(pUserEntity);
37
if
(!character)
38
return
;
39
40
RplComponent characterRplComp = character.GetRplComponent();
41
if
(!characterRplComp)
42
return
;
43
44
RplComponent rplComponent = RplComponent.Cast(flag.
FindComponent
(RplComponent));
45
if
(rplComponent && !rplComponent.IsProxy())
46
{
47
vector
mat[4];
48
pOwnerEntity.
GetTransform
(mat);
49
mat[3] = mat[3] +
m_vFlagOffset
;
50
itemComponent.
SetPlacementPosition
(mat[0], mat[1], mat[2], mat[3], characterRplComp.Id());
51
}
52
53
SCR_SoundManagerModule
.CreateAndPlayAudioSource(flag,
SCR_SoundEvent
.SOUND_MINEFLAG_PLACE);
54
55
if
(userRplComponent.IsOwner())
56
storageManager.TryRemoveItemFromStorage(flag, itemComponent.GetParentSlot().GetStorage());
57
58
if
(ownerRplComponent.IsOwner())
59
{
60
SCR_MineWeaponComponent mine = SCR_MineWeaponComponent.Cast(pOwnerEntity.
FindComponent
(SCR_MineWeaponComponent));
61
if
(mine)
62
mine.SetFlag(flag);
63
}
64
}
65
66
//------------------------------------------------------------------------------------------------
67
override
bool
CanBeShownScript
(
IEntity
user)
68
{
69
SCR_MineWeaponComponent mine = SCR_MineWeaponComponent.Cast(
GetOwner
().FindComponent(SCR_MineWeaponComponent));
70
if
(!mine || mine.IsFlagged())
71
return
false
;
72
73
SCR_PressureTriggerComponent mineTriggerComponent = SCR_PressureTriggerComponent.Cast(
GetOwner
().FindComponent(SCR_PressureTriggerComponent));
74
if
(!mineTriggerComponent || !mineTriggerComponent.IsActivated())
75
return
false
;
76
77
SCR_MineAwarenessComponent
mineAwarenessComponent =
SCR_MineAwarenessComponent
.
GetLocalInstance
();
78
if
(!mineAwarenessComponent)
79
return
super.CanBeShownScript(user);
80
81
if
(!mineAwarenessComponent.
IsDetected
(
GetOwner
()))
82
return
false
;
83
84
InventoryStorageManagerComponent
storageManager =
InventoryStorageManagerComponent
.Cast(user.
FindComponent
(
InventoryStorageManagerComponent
));
85
if
(!storageManager)
86
return
false
;
87
88
if
(!
FindFlagInInventory
(storageManager))
89
return
false
;
90
91
return
super.CanBeShownScript(user);
92
}
93
}
BaseUserAction::GetOwner
proto external IEntity GetOwner()
Returns the parent entity of this action.
ChimeraCharacter
Definition
ChimeraCharacter.c:13
IEntity
Definition
IEntity.c:13
IEntity::FindComponent
proto external Managed FindComponent(typename typeName)
IEntity::GetTransform
proto external void GetTransform(out vector mat[])
InventoryStorageManagerComponent
Definition
InventoryStorageManagerComponent.c:13
SCR_EntityHelper
Definition
SCR_EntityHelper.c:2
SCR_EntityHelper::GetEntityRplComponent
static RplComponent GetEntityRplComponent(notnull IEntity entity)
Definition
SCR_EntityHelper.c:451
SCR_MineAddFlagAction
Definition
SCR_MineAddFlagAction.c:3
SCR_MineAddFlagAction::CanBeShownScript
override bool CanBeShownScript(IEntity user)
Definition
SCR_MineAddFlagAction.c:67
SCR_MineAddFlagAction::m_vFlagOffset
vector m_vFlagOffset
Definition
SCR_MineAddFlagAction.c:5
SCR_MineAddFlagAction::FindFlagInInventory
IEntity FindFlagInInventory(InventoryStorageManagerComponent storageManager)
Definition
SCR_MineAddFlagAction.c:8
SCR_MineAddFlagAction::PerformAction
override event void PerformAction(IEntity pOwnerEntity, IEntity pUserEntity)
Definition
SCR_MineAddFlagAction.c:14
SCR_MineAwarenessComponent
Definition
SCR_MineAwarenessComponent.c:13
SCR_MineAwarenessComponent::GetLocalInstance
static SCR_MineAwarenessComponent GetLocalInstance()
Definition
SCR_MineAwarenessComponent.c:19
SCR_MineAwarenessComponent::IsDetected
bool IsDetected(IEntity entity)
Definition
SCR_MineAwarenessComponent.c:68
SCR_PlaceableInventoryItemComponent
Definition
SCR_PlaceableInventoryItemComponent.c:11
SCR_PlaceableInventoryItemComponent::SetPlacementPosition
void SetPlacementPosition(vector right, vector up, vector forward, vector position, RplId characterRplId)
Authority method used to change the position at which item will placed when removed from the inventor...
Definition
SCR_PlaceableInventoryItemComponent.c:138
SCR_SoundEvent
Definition
SCR_SoundEvent.c:2
SCR_SoundManagerModule
Definition
SCR_SoundManagerModule.c:12
ScriptedUserAction
Definition
ScriptedUserAction.c:13
vector
Definition
vector.c:13
Attribute
SCR_FieldOfViewSettings Attribute
Definition
SendGoalMessage.c:170
EStoragePurpose
EStoragePurpose
Definition
EStoragePurpose.c:13
scripts
Game
UserActions
SCR_MineAddFlagAction.c
Generated by
1.17.0