DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
SyncEvents.c
Go to the documentation of this file.
2{
3 static void RegisterEvents()
4 {
5 DayZGame dz_game = DayZGame.Cast( GetGame() );
6
7 dz_game.Event_OnRPC.Insert( Event_OnRPC );
8 Print("SyncEvents -> RegisterEvents");
9 }
10
11 static void Event_OnRPC(PlayerIdentity sender, Object target, int rpc_type, ParamsReadContext ctx)
12 {
13 if ( rpc_type == ERPCs.RPC_SYNC_EVENT && GetGame() && GetGame().IsMultiplayer() && GetGame().IsClient() )
14 {
16
17 if ( ctx.Read( event_data ) )
18 {
19 OnSyncEvent( event_data.param1, event_data.param2, target );
20 }
21 }
22 }
23
24 static void OnSyncEvent( ESyncEvent event_type, SyncData data, Object target )
25 {
26 switch ( event_type )
27 {
28 case ESyncEvent.PlayerList:
29 {
31 break;
32 }
33 case ESyncEvent.EntityKill:
34 {
36 break;
37 }
38 case ESyncEvent.PlayerIgnateFireplayce:
39 {
41 break;
42 }
43 }
44 }
45
46 static void SendPlayerList()
47 {
48 SyncData data = new SyncData;
51
52 SendSyncEvent( ERPCs.RPC_SYNC_EVENT, ESyncEvent.PlayerList, data, true );
53 }
54
55 static void SendEntityKilled( EntityAI victim, EntityAI killer, EntityAI source, bool is_headshot )
56 {
57 if ( (victim && victim.IsPlayer()) || (killer && killer.IsPlayer()) )
58 {
59 SyncData data = new SyncData;
61
62 data.m_EntityKill.m_EntityVictim = victim;
63 data.m_EntityKill.m_EntityKiller = killer;
64 data.m_EntityKill.m_EntitySource = source;
65 data.m_EntityKill.m_IsHeadShot = is_headshot;
66
67 Man recipient;
68
69 if ( killer && killer.IsPlayer() && victim.GetID() != killer.GetID() )
70 {
71 recipient = Man.Cast(killer);
72 }
73 else if ( victim && victim.IsPlayer() )
74 {
75 recipient = Man.Cast(victim);
76 }
77
78 SendSyncEventEx( ERPCs.RPC_SYNC_EVENT, ESyncEvent.EntityKill, data, true, recipient );
79 }
80 }
81
82 static void SendPlayerIgnatedFireplace( Man player, EFireIgniteType ignite_type )
83 {
84 SyncData data = new SyncData;
85 data.m_SyncInt = ignite_type;
86
87 SendSyncEvent( ERPCs.RPC_SYNC_EVENT, ESyncEvent.PlayerIgnateFireplayce, data, true, player.GetIdentity() );
88 }
89
90 private static void SendSyncEvent( ERPCs rpc_event_id, ESyncEvent sync_event_type, SyncData data = null, bool guaranteed = true, PlayerIdentity player_target = null )
91 {
92 Param2<ESyncEvent, ref SyncData> event_data = new Param2<ESyncEvent, ref SyncData>( sync_event_type, data );
93 if ( !player_target )
94 {
95 GetGame().RPCSingleParam( null, rpc_event_id, event_data, guaranteed );
96 }
97 else
98 {
99 GetGame().RPCSingleParam( null, rpc_event_id, event_data, guaranteed, player_target );
100 }
101 }
102
103 private static void SendSyncEventEx( ERPCs rpc_event_id, ESyncEvent sync_event_type, SyncData data = null, bool guaranteed = true, Man recipient = null )
104 {
105 SendSyncEvent(rpc_event_id, sync_event_type, data, guaranteed, recipient.GetIdentity());
106 }
107}
EFireIgniteType
ERPCs
Definition ERPCs.c:2
ESyncEvent
Definition ESyncEvent.c:2
void RPCSingleParam(Object target, int rpc_type, Param param, bool guaranteed, PlayerIdentity recipient=null)
see CGame.RPC
Definition Game.c:882
static void SyncEvent_OnRecievedPlayerList(SyncPlayerList player_list)
Definition ClientData.c:35
static ref ScriptInvoker SyncEvent_OnPlayerIgnitedFireplace
Definition ClientData.c:5
static ref ScriptInvoker SyncEvent_OnEntityKilled
Definition ClientData.c:4
The class that will be instanced (moddable)
Definition gameplay.c:378
Serialization general interface. Serializer API works with:
Definition Serializer.c:56
proto bool Read(void value_in)
ref SyncPlayerList m_ServerPlayerList
Definition SyncData.c:4
ref SyncEntityKillInfo m_EntityKill
Definition SyncData.c:5
int m_SyncInt
Definition SyncData.c:3
static void SendPlayerIgnatedFireplace(Man player, EFireIgniteType ignite_type)
Definition SyncEvents.c:82
static void OnSyncEvent(ESyncEvent event_type, SyncData data, Object target)
Definition SyncEvents.c:24
static void SendEntityKilled(EntityAI victim, EntityAI killer, EntityAI source, bool is_headshot)
Definition SyncEvents.c:55
static void RegisterEvents()
Definition SyncEvents.c:3
static void Event_OnRPC(PlayerIdentity sender, Object target, int rpc_type, ParamsReadContext ctx)
Definition SyncEvents.c:11
static private void SendSyncEventEx(ERPCs rpc_event_id, ESyncEvent sync_event_type, SyncData data=null, bool guaranteed=true, Man recipient=null)
Definition SyncEvents.c:103
static private void SendSyncEvent(ERPCs rpc_event_id, ESyncEvent sync_event_type, SyncData data=null, bool guaranteed=true, PlayerIdentity player_target=null)
Definition SyncEvents.c:90
static void SendPlayerList()
Definition SyncEvents.c:46
void CreatePlayerList()
proto native CGame GetGame()
proto void Print(void var)
Prints content of variable to console/log.