DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
PluginRemotePlayerDebugClient.c
См. документацию.
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}
map
Определения ControlsXboxNew.c:4
ERPCs
Определения ERPCs.c:2
Icon x
void UpdateDistanceWidget(int index, PlayerBase other_player)
ref TextWidget m_DistanceWidget[MAX_SIMULTANIOUS_PLAYERS]
Определения PluginRemotePlayerDebugClient.c:18
eRemoteDebugType m_DebugType
Определения PluginRemotePlayerDebugClient.c:19
ref map< PlayerBase, ref RemotePlayerDamageDebug > m_PlayerDebugDamage
Определения PluginRemotePlayerDebugClient.c:12
eRemoteDebugType
Определения PluginRemotePlayerDebugClient.c:2
@ DAMAGE_ONLY
Определения PluginRemotePlayerDebugClient.c:4
void DebugDamage(PlayerBase player)
ref TextListboxWidget m_StatListWidgets[MAX_SIMULTANIOUS_PLAYERS]
Определения PluginRemotePlayerDebugClient.c:16
ref TextListboxWidget m_DamageListWidgets[MAX_SIMULTANIOUS_PLAYERS]
Определения PluginRemotePlayerDebugClient.c:17
void UpdateStatsWidget(int index, RemotePlayerStatDebug rpd)
void UpdateDamageWidget(int index, PlayerBase player)
Определения PluginRemotePlayerDebugClient.c:96
void RequestPlayerInfo(PlayerBase player, int type)
ref Widget m_RootWidget[MAX_SIMULTANIOUS_PLAYERS]
Определения PluginRemotePlayerDebugClient.c:14
void UpdateWidgetsStats()
Определения PluginRemotePlayerDebugClient.c:56
ref array< ref RemotePlayerStatDebug > m_PlayerDebugStats
Определения PluginRemotePlayerDebugClient.c:11
enum eRemoteDebugType MAX_SIMULTANIOUS_PLAYERS
void MergeDamage(array< ref RemotePlayerDamageDebug > delta)
ref Widget m_RootWidgetDamage[MAX_SIMULTANIOUS_PLAYERS]
Определения PluginRemotePlayerDebugClient.c:15
void RemotePlayerStatDebug(PlayerBase player)
Определения RemotePlayerStatDebug.c:16
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()
Определения DamageData.c:19
float GetValueBlood()
Определения DamageData.c:24
float GetValueGlobal()
Определения DamageData.c:14
Определения DamageData.c:2
Определения PlayerBaseClient.c:2
void OnInit()
void OnRPC(PlayerBase player, int rpc_type, ParamsReadContext ctx)
Определения PluginDeveloper.c:61
void EnableWidgets(bool enable)
Определения PluginBase.c:2
void InsertDamageObject(DamageData damage_object)
Определения RemotePlayerDamageDebug.c:25
PlayerBase GetPlayer()
Определения RemotePlayerDamageDebug.c:31
void GetReversed(array< ref DamageData > damage_list)
Определения RemotePlayerDamageDebug.c:45
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...
Определения gameplay.c:105
proto bool Write(void value_out)
proto bool Read(void value_in)
Определения EnWidgets.c:220
Определения EnWidgets.c:190
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
proto string ToString(bool simple=true)
static proto native float Distance(vector v1, vector v2)
Returns the distance between tips of two 3D vectors.
Определения EnConvert.c:106
Serializer ParamsReadContext
Определения gameplay.c:15
proto native CGame GetGame()
void PrintString(string s)
Helper for printing out string expression. Example: PrintString("Hello " + var);.
Определения EnScript.c:345
@ ALL
Mask of all events.
Определения EnEntity.c:110
@ NONE
No flags.
Определения EnProfiler.c:11
proto native void OnUpdate()
Определения tools.c:349
proto native external Widget CreateWidgets(string layout, Widget parentWidget=NULL, bool immedUpdate=true)
Create widgets from *.layout file.
proto native Widget FindAnyWidget(string pathname)