DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
PluginRemotePlayerDebugClient.c
Go to the documentation of this file.
2{
6}
7
8class PluginRemotePlayerDebugClient extends PluginBase
9{
13
20
21 override void OnInit()
22 {
23 #ifndef NO_GUI
25 #endif
26 }
27
28 override void OnUpdate(float delta_time)
29 {
30 #ifndef NO_GUI
32 #endif
33 }
34
36 {
37 for (int i = 0; i < MAX_SIMULTANIOUS_PLAYERS; ++i)
38 {
39 m_RootWidget[i] = GetGame().GetWorkspace().CreateWidgets("gui/layouts/debug/day_z_debug_remoteinfo.layout");
40 m_RootWidgetDamage[i] = GetGame().GetWorkspace().CreateWidgets("gui/layouts/debug/day_z_debug_remoteinfo_damage.layout");
41 m_DamageListWidgets[i] = TextListboxWidget.Cast(m_RootWidgetDamage[i].FindAnyWidget("TextListboxWidget1"));
42 m_StatListWidgets[i] = TextListboxWidget.Cast(m_RootWidget[i].FindAnyWidget("TextListboxWidget0"));
43 m_DistanceWidget[i] = TextWidget.Cast(m_RootWidget[i].FindAnyWidget("TextWidget0"));
44 }
45 }
46
47 void EnableWidgets(bool enable)
48 {
49 for (int i = 0; i < MAX_SIMULTANIOUS_PLAYERS; ++i)
50 {
51 m_RootWidget[i].Show(enable);
52 m_RootWidgetDamage[i].Show(enable);
53 }
54 }
55
57 {
58 int i = 0;
59 for (; i < m_PlayerDebugStats.Count(); ++i)
60 {
62 PlayerBase player = rpd.GetPlayer();
63
64 if (player)
65 {
66 vector pos = player.GetPosition();
67 vector screen_pos_stats = GetGame().GetScreenPos(pos + "0 0 0");
68 vector screen_pos_damage = GetGame().GetScreenPos(pos + "0 2 0");
69 m_RootWidget[i].SetPos(screen_pos_stats[0], screen_pos_stats[1]);
70 m_RootWidgetDamage[i].SetPos(screen_pos_damage[0], screen_pos_damage[1]);
71
72 if (screen_pos_stats[2] > 0 && screen_pos_stats[0] > 0 && screen_pos_stats[1] > 0)
73 {
74 m_RootWidget[i].Show(true);
75 m_RootWidgetDamage[i].Show(true);
76 UpdateStatsWidget(i, rpd);
77 UpdateDistanceWidget(i, player);
78 UpdateDamageWidget(i, player);
79 }
80 else
81 {
82 m_RootWidget[i].Show(false);
83 m_RootWidgetDamage[i].Show(false);
84 }
85
86 }
87 }
88 for (; i < MAX_SIMULTANIOUS_PLAYERS; ++i)
89 {
90 m_RootWidget[i].Show(false);
91 m_RootWidgetDamage[i].Show(false);
92 }
93 }
94
95
96 void UpdateDamageWidget(int index, PlayerBase player)
97 {
99 if (m_PlayerDebugDamage.Contains(player))
100 {
102 value.GetReversed(damage_list);
103
104 m_DamageListWidgets[index].ClearItems();
105 if (damage_list.Count() > 0)
106 {
107 m_DamageListWidgets[index].Show(true);
108 for (int i = 0; i < damage_list.Count(); ++i)
109 {
110 DamageData data = damage_list[i];
111 float value_global = data.GetValueGlobal();
112 float value_blood = data.GetValueBlood();
113 float value_shock = data.GetValueShock();
114
115 m_DamageListWidgets[index].AddItem( value_global.ToString(), null, 0, i );
116 m_DamageListWidgets[index].SetItem( i, value_blood.ToString(), null, 1 );
117 m_DamageListWidgets[index].SetItem( i, value_shock.ToString(), null, 2 );
118 }
119 }
120 else
121 {
122 m_DamageListWidgets[index].Show(false);
123 }
124 }
125 }
126
127 void UpdateDistanceWidget(int index, PlayerBase other_player)
128 {
129 float distance = vector.Distance(GetGame().GetCurrentCameraPosition(), other_player.GetPosition());
130 m_DistanceWidget[index].SetText(distance.ToString() + "m");
131 }
132
134 {
135 array<string> names = new array<string>;
136 array<string> values = new array<string>;
137 rpd.SerializeNames(names, m_DebugType);
138 rpd.SerializeValues(values,m_DebugType);
139 m_StatListWidgets[index].ClearItems();
140
141 for (int i = 0; i < names.Count(); ++i)
142 {
143 m_StatListWidgets[index].AddItem( names.Get(i), null, 0, i );
144 m_StatListWidgets[index].SetItem( i, values.Get(i), null, 1 );
145 }
146 }
147
148 void RequestPlayerInfo(PlayerBase player, int type)
149 {
150#ifdef DIAG_DEVELOPER
151 if (type == 0)
152 {
153 EnableWidgets(false);
154 }
155 /*
156 else
157 {
158 EnableWidgets(true);
159 }
160 */
161 ScriptRPC rpc = new ScriptRPC();
162 m_DebugType = type;
163 rpc.Write(type);
164 rpc.Send( player, ERPCs.DEV_PLAYER_DEBUG_REQUEST, true, player.GetIdentity() );
165#endif
166 }
167
169 {
170 foreach (RemotePlayerDamageDebug valueDelta : delta)
171 {
172 PlayerBase playerDelta = valueDelta.GetPlayer();
173
174 if ( m_PlayerDebugDamage.Contains(null) )
175 {
176 //cleans up garbage
177 m_PlayerDebugDamage.Remove(null);
178 }
179
180 if ( m_PlayerDebugDamage.Contains(playerDelta) )
181 {
182 RemotePlayerDamageDebug valueLocal = m_PlayerDebugDamage.Get(playerDelta);
184 valueDelta.GetReversed(damageList);
185
186 foreach (DamageData data : damageList)
187 {
188 valueLocal.InsertDamageObject( data );
189 }
190 }
191 else
192 {
193 m_PlayerDebugDamage.Insert(playerDelta, valueDelta);
194 }
195 }
196 }
197
199 {
200 for (int i = 0; i < m_PlayerDebugStats.Count(); i++)
201 {
202 player = m_PlayerDebugStats.Get(i).GetPlayer();
203
204 PrintString("player:" + player.ToString() );
205 m_PlayerDebugStats.Get(i).Debug();
206 PrintString("-------------------------------------");
207 }
208
209 for (i = 0; i < m_PlayerDebugDamage.Count(); i++)
210 {
211 PrintString("-------------------------------------");
212 if( m_PlayerDebugDamage.GetElement(i) ) m_PlayerDebugDamage.GetElement(i).Debug();
213 PrintString("-------------------------------------");
214 }
215
216 for (i = 0; i < m_PlayerDebugDamage.Count();i++)
217 {
218 PrintString("------------Debug Damage Start--------------");
219 PlayerBase player2 = m_PlayerDebugDamage.GetKey(i);
221 obj.Debug();
222 PrintString("-------------Debug Damage End-------------");
223 }
224 }
225
227 {
229
231
232 ctx.Read(player_damage);
233 PlayerBase player;
234 for (int x = 0; x < player_damage.Count(); x++)
235 {
236 RemotePlayerDamageDebug value = player_damage.Get(x);
237 if (value)
238 {
239 player = value.GetPlayer();
240 PrintString("debug damage: "+x.ToString() + "," + player.ToString());
241 value.Debug();
242
243 int xs = 1 + 1;
244 }
245 }
246
247 if (player_damage.Count() > 0 ) MergeDamage(player_damage);
248 }
249}
ERPCs
Definition ERPCs.c:2
Icon x
void UpdateDistanceWidget(int index, PlayerBase other_player)
ref TextWidget m_DistanceWidget[MAX_SIMULTANIOUS_PLAYERS]
eRemoteDebugType m_DebugType
ref map< PlayerBase, ref RemotePlayerDamageDebug > m_PlayerDebugDamage
void DebugDamage(PlayerBase player)
ref TextListboxWidget m_StatListWidgets[MAX_SIMULTANIOUS_PLAYERS]
ref TextListboxWidget m_DamageListWidgets[MAX_SIMULTANIOUS_PLAYERS]
void UpdateStatsWidget(int index, RemotePlayerStatDebug rpd)
void UpdateDamageWidget(int index, PlayerBase player)
void RequestPlayerInfo(PlayerBase player, int type)
ref Widget m_RootWidget[MAX_SIMULTANIOUS_PLAYERS]
void UpdateWidgetsStats()
ref array< ref RemotePlayerStatDebug > m_PlayerDebugStats
enum eRemoteDebugType MAX_SIMULTANIOUS_PLAYERS
void MergeDamage(array< ref RemotePlayerDamageDebug > delta)
ref Widget m_RootWidgetDamage[MAX_SIMULTANIOUS_PLAYERS]
void RemotePlayerStatDebug(PlayerBase player)
proto native vector GetScreenPos(vector world_pos)
Transforms position in world to position in screen in pixels as x, y component of vector,...
proto native WorkspaceWidget GetWorkspace()
float GetValueShock()
Definition DamageData.c:19
float GetValueBlood()
Definition DamageData.c:24
float GetValueGlobal()
Definition DamageData.c:14
eRemoteDebugType m_DebugType
void OnInit()
void OnRPC(PlayerBase player, int rpc_type, ParamsReadContext ctx)
void GetReversed(array< ref DamageData > damage_list)
void InsertDamageObject(DamageData damage_object)
proto native void Send(Object target, int rpc_type, bool guaranteed, PlayerIdentity recipient=NULL)
Initiate remote procedure call. When called on client, RPC is evaluated on server; When called on ser...
Serialization general interface. Serializer API works with:
Definition Serializer.c:56
proto bool Write(void value_out)
proto bool Read(void value_in)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
proto string ToString()
static proto native float Distance(vector v1, vector v2)
Returns the distance between tips of two 3D vectors.
proto native CGame GetGame()
void PrintString(string s)
Helper for printing out string expression. Example: PrintString("Hello " + var);.
Definition EnScript.c:345
proto native void OnUpdate()
Definition tools.c:338
proto native Widget FindAnyWidget(string pathname)
proto native external Widget CreateWidgets(string layout, Widget parentWidget=NULL, bool immedUpdate=true)
Create widgets from *.layout file.