Dayz Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Loading...
Searching...
No Matches
pluginremoteplayerdebugserver.c
Go to the documentation of this file.
1class PluginRemotePlayerDebugServer extends PluginBase
2{
3 ref set<PlayerBase> m_ClientList = new set<PlayerBase>;
4
7 float m_AccuTime;
8 const int INTERVAL = 1;
9
12
13 override void OnUpdate(float delta_time)
14 {
15 #ifdef SERVER
16 if ( m_ClientList.Count() != 0 )
17 {
18 m_AccuTime += delta_time;
19
20 if ( m_AccuTime > INTERVAL )
21 {
22 m_AccuTime = 0;
23 SendDebug();
24 }
25 }
26 #endif
27 }
28
29 void SetWatching(bool enable)
30 {
31 m_Watching = enable;
32 }
33
35 {
36 return m_Watching;
37 }
38
40 {
41 if (!g_Game.IsDedicatedServer())
42 return;
43
44 array<Man> players = new array<Man>;
45 g_Game.GetPlayers(players);
46 m_PlayerDebugStats.Clear();
47
48 foreach (Man playerMan : players)
49 {
50 PlayerBase player = PlayerBase.Cast(playerMan);
52 m_PlayerDebugStats.Insert(rpd);
53 }
54 }
55
56 void SendDebug()
57 {
58#ifdef DIAG_DEVELOPER
61
62 for(int i = 0; i < m_ClientList.Count(); ++i)
63 {
64 PlayerBase player = m_ClientList[i];
65 if (player)
66 {
67 ScriptRPC rpc = new ScriptRPC();
69
71 {
72 if (player2)
73 {
74 player_damage.Insert(value);
75
76 }
77 //int xs = 1 + 1;
78 }
79
80 rpc.Write(player_damage);
81
82 rpc.Send(player, ERPCs.DEV_PLAYER_DEBUG_DATA, true, player.GetIdentity());
83 m_PlayerDebugDamage.Clear();
84 }
85 else
86 {
87 m_ClientList.Remove(i);
88 --i;
89 }
90 }
91#endif
92 }
93
94
95 void OnDamageEvent(PlayerBase player, TotalDamageResult damageResult)
96 {
97 if ( !GetWatching() || !damageResult )
98 return;
99
100 float damage_global = damageResult.GetDamage("","");
101 float damage_blood = damageResult.GetDamage("","Blood");
102 float damage_shock = damageResult.GetDamage("","Shock");
103
104 if ( m_PlayerDebugDamage.Contains(player) )
105 {
106 m_PlayerDebugDamage.Get(player).AddDamage( damage_global, damage_blood, damage_shock );
107 }
108 else
109 {
111 rpdd.AddDamage(damage_global, damage_blood, damage_shock);
112 m_PlayerDebugDamage.Insert(player, rpdd);
113 }
114 }
115
116
117 void OnRequestReceived(PlayerBase player, bool enable)
118 {
119 int index = m_ClientList.Find(player);
120
121 if (enable)
122 {
123 m_ClientList.Insert(player);
124 SetWatching(true);
125 }
126 else if (index != -1 && m_ClientList.Count() != 0)
127 {
128 m_ClientList.Remove(index);
129 }
130
131 if ( m_ClientList.Count() == 0 )
132 {
133 SetWatching(false);
134 }
135 }
136
138 {
139 bool enable;
140 ctx.Read(enable);
141 OnRequestReceived(player, enable);
142 }
143}
Class PluginMessageManager provides some basic Message Distribution mechanics, if you get instance of...
Definition pluginbase.c:2
eRemoteDebugType m_DebugType
ref map< PlayerBase, ref RemotePlayerDamageDebug > m_PlayerDebugDamage
void OnRPC(ParamsReadContext ctx, PlayerBase player)
ref set< PlayerBase > m_ClientList
ref array< ref RemotePlayerStatDebug > m_PlayerDebugStats
void OnDamageEvent(PlayerBase player, TotalDamageResult damageResult)
void OnRequestReceived(PlayerBase player, bool enable)
void SetWatching(bool enable)
override void OnUpdate(float delta_time)
void AddDamage(float value_global, float value_blood, float value_shock)
proto native void Send(Object target, int rpc_type, bool guaranteed, PlayerIdentity recipient=NULL)
Initiate remote procedure call.
proto bool Write(void value_out)
proto bool Read(void value_in)
proto native float GetDamage(string zoneName, string healthType)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
DayZGame g_Game
Definition dayzgame.c:3942
ERPCs
Definition erpcs.c:2
Serializer ParamsReadContext
Definition gameplay.c:15
void RemotePlayerStatDebug(PlayerBase player)