DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
SyncEvents.c
См. документацию.
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 {
32 break;
33 }
34 case ESyncEvent.EntityKill:
35 {
37 break;
38 }
39 case ESyncEvent.PlayerIgnateFireplayce:
40 {
42 break;
43 }
44 }
45 }
46
47 static void SendPlayerList()
48 {
49 SyncData data = new SyncData;
52
53 SendSyncEvent( ERPCs.RPC_SYNC_EVENT, ESyncEvent.PlayerList, data, true );
54 }
55
56 static void SendEntityKilled( EntityAI victim, EntityAI killer, EntityAI source, bool is_headshot )
57 {
58 if ( (victim && victim.IsPlayer()) || (killer && killer.IsPlayer()) )
59 {
60 SyncData data = new SyncData;
62
63 data.m_EntityKill.m_EntityVictim = victim;
64 data.m_EntityKill.m_EntityKiller = killer;
65 data.m_EntityKill.m_EntitySource = source;
66 data.m_EntityKill.m_IsHeadShot = is_headshot;
67
68 Man recipient;
69
70 if ( killer && killer.IsPlayer() && victim.GetID() != killer.GetID() )
71 {
72 recipient = Man.Cast(killer);
73 }
74 else if ( victim && victim.IsPlayer() )
75 {
76 recipient = Man.Cast(victim);
77 }
78
79 SendSyncEventEx( ERPCs.RPC_SYNC_EVENT, ESyncEvent.EntityKill, data, true, recipient );
80 }
81 }
82
83 static void SendPlayerIgnatedFireplace( Man player, EFireIgniteType ignite_type )
84 {
85 SyncData data = new SyncData;
86 data.m_SyncInt = ignite_type;
87
88 SendSyncEvent( ERPCs.RPC_SYNC_EVENT, ESyncEvent.PlayerIgnateFireplayce, data, true, player.GetIdentity() );
89 }
90
91 private static void SendSyncEvent( ERPCs rpc_event_id, ESyncEvent sync_event_type, SyncData data = null, bool guaranteed = true, PlayerIdentity player_target = null )
92 {
93 Param2<ESyncEvent, ref SyncData> event_data = new Param2<ESyncEvent, ref SyncData>( sync_event_type, data );
94 if ( !player_target )
95 {
96 GetGame().RPCSingleParam( null, rpc_event_id, event_data, guaranteed );
97 }
98 else
99 {
100 GetGame().RPCSingleParam( null, rpc_event_id, event_data, guaranteed, player_target );
101 }
102 }
103
104 private static void SendSyncEventEx( ERPCs rpc_event_id, ESyncEvent sync_event_type, SyncData data = null, bool guaranteed = true, Man recipient = null )
105 {
106 SendSyncEvent(rpc_event_id, sync_event_type, data, guaranteed, recipient.GetIdentity());
107 }
108}
EFireIgniteType
Определения EFireIgniteType.c:2
ERPCs
Определения ERPCs.c:2
ESyncEvent
Определения ESyncEvent.c:2
proto native void RPCSingleParam(Object target, int rpc_type, Param param, bool guaranteed, PlayerIdentity recipient=null)
see CGame.RPC
static void SyncEvent_PreprocessPlayerList(SyncPlayerList player_list)
Определения ClientData.c:35
static void SyncEvent_OnRecievedPlayerList(SyncPlayerList player_list)
Определения ClientData.c:51
static ref ScriptInvoker SyncEvent_OnPlayerIgnitedFireplace
Определения ClientData.c:5
static ref ScriptInvoker SyncEvent_OnEntityKilled
Определения ClientData.c:4
Определения ClientData.c:2
Определения Building.c:6
Определения ObjectTyped.c:2
Определения PPEConstants.c:68
The class that will be instanced (moddable)
Определения gameplay.c:389
proto bool Read(void value_in)
int m_SyncInt
Определения SyncData.c:3
ref SyncEntityKillInfo m_EntityKill
Определения SyncData.c:5
ref SyncPlayerList m_ServerPlayerList
Определения SyncData.c:4
Определения SyncData.c:2
EntityAI m_EntityVictim
Определения SyncEntityKill.c:3
EntityAI m_EntitySource
Определения SyncEntityKill.c:5
EntityAI m_EntityKiller
Определения SyncEntityKill.c:4
bool m_IsHeadShot
Определения SyncEntityKill.c:6
static void SendSyncEvent(ERPCs rpc_event_id, ESyncEvent sync_event_type, SyncData data=null, bool guaranteed=true, PlayerIdentity player_target=null)
Определения SyncEvents.c:91
static void SendPlayerList()
Определения SyncEvents.c:47
static void SendPlayerIgnatedFireplace(Man player, EFireIgniteType ignite_type)
Определения SyncEvents.c:83
static void SendEntityKilled(EntityAI victim, EntityAI killer, EntityAI source, bool is_headshot)
Определения SyncEvents.c:56
static void Event_OnRPC(PlayerIdentity sender, Object target, int rpc_type, ParamsReadContext ctx)
Определения SyncEvents.c:11
static void OnSyncEvent(ESyncEvent event_type, SyncData data, Object target)
Определения SyncEvents.c:24
static void RegisterEvents()
Определения SyncEvents.c:3
static void SendSyncEventEx(ERPCs rpc_event_id, ESyncEvent sync_event_type, SyncData data=null, bool guaranteed=true, Man recipient=null)
Определения SyncEvents.c:104
Определения SyncEvents.c:2
void CreatePlayerList()
Определения SyncPlayerList.c:5
Определения SyncPlayerList.c:2
Serializer ParamsReadContext
Определения gameplay.c:15
proto native CGame GetGame()
proto void Print(void var)
Prints content of variable to console/log.