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_MapMarkerSyncComponent.c
Go to the documentation of this file.
1
[
ComponentEditorProps
(
category
:
"GameScripted/Misc"
, description:
""
)]
2
class
SCR_MapMarkerSyncComponentClass
:
ScriptComponentClass
3
{
4
}
5
8
class
SCR_MapMarkerSyncComponent :
ScriptComponent
9
{
10
protected
bool
m_bIsDeleteRestricted
=
true
;
// server side only, only allow marker owners to delete their placed markers
11
protected
int
m_iPlacedMarkerLimit
= 10;
// server side only, limit of allowed synchronized markers per client
12
protected
ref array<int>
m_OwnedMarkers
= {};
// server side only, list of markers owned by this controller to enforce limits
13
14
//------------------------------------------------------------------------------------------------
18
void
AskAddStaticMarker
(notnull
SCR_MapMarkerBase
marker)
19
{
20
Rpc
(
RPC_AskAddStaticMarker
, marker);
21
}
22
23
//------------------------------------------------------------------------------------------------
27
void
AskRemoveStaticMarker
(
int
markerID)
28
{
29
SCR_MapMarkerManagerComponent markerMgr = SCR_MapMarkerManagerComponent.GetInstance();
30
if
(!markerMgr)
31
return
;
32
33
SCR_MapMarkerBase
marker = markerMgr.GetStaticMarkerByID(markerID);
34
if
(!marker)
// client side sanity check
35
return
;
36
37
Rpc
(
RPC_AskRemoveStaticMarker
, markerID);
38
}
39
40
//------------------------------------------------------------------------------------------------
44
void
ClearOwnedMarkers
()
45
{
46
for
(
int
i; i <
m_OwnedMarkers
.Count(); i++)
47
{
48
if
(
m_OwnedMarkers
.IsIndexValid(i))
49
{
50
AskRemoveStaticMarker
(
m_OwnedMarkers
[i]);
51
i--;
52
}
53
}
54
}
55
56
//------------------------------------------------------------------------------------------------
59
void
RemovePlayerMarker
(
int
markerID)
60
{
61
m_OwnedMarkers
.RemoveItemOrdered(markerID);
62
}
63
64
//------------------------------------------------------------------------------------------------
65
// RPC
66
//------------------------------------------------------------------------------------------------
67
68
//------------------------------------------------------------------------------------------------
69
[
RplRpc
(
RplChannel
.Reliable,
RplRcver
.Server)]
70
protected
void
RPC_AskAddStaticMarker
(
SCR_MapMarkerBase
markerData)
71
{
72
SCR_MapMarkerManagerComponent markerMgr = SCR_MapMarkerManagerComponent.GetInstance();
73
if
(!markerMgr ||
m_iPlacedMarkerLimit
<= 0)
74
return
;
75
76
if
(
m_OwnedMarkers
.Count() >=
m_iPlacedMarkerLimit
)
// remove first if over limit
77
Rpc
(
RPC_AskRemoveStaticMarker
,
m_OwnedMarkers
[0]);
78
79
markerMgr.AssignMarkerUID(markerData);
80
81
markerData.
SetMarkerOwnerID
(
SCR_PlayerController
.Cast(
GetOwner
()).
GetPlayerId
());
82
m_OwnedMarkers
.Insert(markerData.
GetMarkerID
());
83
84
markerMgr.OnAddSynchedMarker(markerData);
// add server side
85
markerMgr.OnAskAddStaticMarker(markerData);
86
}
87
88
//------------------------------------------------------------------------------------------------
89
[
RplRpc
(
RplChannel
.Reliable,
RplRcver
.Server)]
90
protected
void
RPC_AskRemoveStaticMarker
(
int
markerID)
91
{
92
SCR_MapMarkerManagerComponent markerMgr = SCR_MapMarkerManagerComponent.GetInstance();
93
if
(!markerMgr)
94
return
;
95
96
SCR_MapMarkerBase
marker = markerMgr.GetStaticMarkerByID(markerID);
97
if
(!marker)
98
marker = markerMgr.GetDisabledMarkerByID(markerID);
99
100
if
(!marker
101
|| marker.
GetMarkerOwnerID
() == -1
// cannot delete server marker by client request
102
||(
m_bIsDeleteRestricted
&& marker.
GetMarkerOwnerID
() !=
SCR_PlayerController
.Cast(
GetOwner
()).
GetPlayerId
()))
// delete by anyone not allowed && is not the callers marker
103
return
;
104
105
if
(marker.
GetMarkerOwnerID
() != -1)
// dedicated servers dont track their marker limits
106
{
107
PlayerController ownerController =
GetGame
().GetPlayerManager().GetPlayerController(marker.
GetMarkerOwnerID
());
108
if
(ownerController)
109
{
110
SCR_MapMarkerSyncComponent ownerSyncComp = SCR_MapMarkerSyncComponent.Cast(ownerController.FindComponent(SCR_MapMarkerSyncComponent));
111
if
(ownerSyncComp)
112
ownerSyncComp.RemovePlayerMarker(markerID);
// this has to be called on this component of the markers owner, not the RPC sender
113
}
114
}
115
116
markerMgr.OnRemoveSynchedMarker(markerID);
// remove server side
117
markerMgr.OnAskRemoveStaticMarker(markerID);
118
}
119
120
//------------------------------------------------------------------------------------------------
121
override
void
OnPostInit
(
IEntity
owner)
122
{
123
SCR_MissionHeader
header =
SCR_MissionHeader
.Cast(
GetGame
().GetMissionHeader());
124
if
(header)
125
{
126
m_iPlacedMarkerLimit
= header.m_iMapMarkerLimitPerPlayer;
127
m_bIsDeleteRestricted
= !header.m_bMapMarkerEnableDeleteByAnyone;
128
}
129
}
130
}
GetGame
ArmaReforgerScripted GetGame()
Definition
game.c:1398
ComponentEditorProps
enum EAIGroupCombatMode ComponentEditorProps(category:"GameScripted/AI", description:"Component for utility AI system for groups")
Definition
SCR_AIGroupUtilityComponent.c:12
RPC_AskAddStaticMarker
void RPC_AskAddStaticMarker(SCR_MapMarkerBase markerData)
Definition
SCR_MapMarkerSyncComponent.c:70
ClearOwnedMarkers
void ClearOwnedMarkers()
Definition
SCR_MapMarkerSyncComponent.c:44
RPC_AskRemoveStaticMarker
void RPC_AskRemoveStaticMarker(int markerID)
Definition
SCR_MapMarkerSyncComponent.c:90
m_iPlacedMarkerLimit
int m_iPlacedMarkerLimit
Definition
SCR_MapMarkerSyncComponent.c:11
AskAddStaticMarker
void AskAddStaticMarker(notnull SCR_MapMarkerBase marker)
Definition
SCR_MapMarkerSyncComponent.c:18
RemovePlayerMarker
void RemovePlayerMarker(int markerID)
Definition
SCR_MapMarkerSyncComponent.c:59
m_OwnedMarkers
ref array< int > m_OwnedMarkers
Definition
SCR_MapMarkerSyncComponent.c:12
AskRemoveStaticMarker
void AskRemoveStaticMarker(int markerID)
Definition
SCR_MapMarkerSyncComponent.c:27
m_bIsDeleteRestricted
SCR_MapMarkerSyncComponentClass m_bIsDeleteRestricted
category
params category
Definition
SCR_VehicleDamageManagerComponent.c:302
GenericComponent::Rpc
void Rpc(func method, void p0=NULL, void p1=NULL, void p2=NULL, void p3=NULL, void p4=NULL, void p5=NULL, void p6=NULL, void p7=NULL)
IEntity
Definition
IEntity.c:13
SCR_MapMarkerBase
Definition
SCR_MapMarkerBase.c:4
SCR_MapMarkerBase::SetMarkerOwnerID
void SetMarkerOwnerID(int playerID)
Definition
SCR_MapMarkerBase.c:89
SCR_MapMarkerBase::GetMarkerOwnerID
int GetMarkerOwnerID()
Definition
SCR_MapMarkerBase.c:83
SCR_MapMarkerBase::GetMarkerID
int GetMarkerID()
Definition
SCR_MapMarkerBase.c:59
SCR_MapMarkerSyncComponentClass
Definition
SCR_MapMarkerSyncComponent.c:3
SCR_MissionHeader
Definition
SCR_MissionHeader.c:2
SCR_PlayerController
Definition
SCR_PlayerController.c:31
ScriptComponentClass
Definition
ScriptComponentClass.c:8
ScriptComponent
Definition
ScriptComponent.c:24
GetOwner
IEntity GetOwner()
Owner entity of the fuel tank.
Definition
SCR_FuelNode.c:128
GetPlayerId
proto external int GetPlayerId()
Definition
SCR_SpawnRequestComponent.c:39
RplRpc
void RplRpc(RplChannel channel, RplRcver rcver, RplCondition condition=RplCondition.None, string customConditionName="")
Definition
EnNetwork.c:95
RplRcver
RplRcver
Definition
RplRcver.c:59
RplChannel
RplChannel
Communication channel. Reliable is guaranteed to be delivered. Unreliable not.
Definition
RplChannel.c:14
OnPostInit
@ OnPostInit
Definition
SndComponentCallbacks.c:15
scripts
Game
Map
Markers
SCR_MapMarkerSyncComponent.c
Generated by
1.17.0