Dayz Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Loading...
Searching...
No Matches
plugindiagmenuclient.c
Go to the documentation of this file.
1// For modding, see PluginDiagMenuModding.c
2// !!! MODDING DISCLAIMER: These are debug functionality files, if you are thinking about modding the vanilla ones, do so at your own risk
3// These files will not be maintained with the thought of "what if a modder modded this" (Excluding the modding functionality of course)
4// Which is why the modding functionality was developed with the thought of the modded ones having their own isolated safe space
5
7{
8#ifdef DIAG_DEVELOPER
9 static int m_SystemsMask;
10
11 // Cheats
12 bool m_ModifiersEnabled = true;
13 int m_IsInvincible;
14 bool m_StaminaDisabled;
15 bool m_ClientInventoryDesync = false;
16
17 // Misc
18 float m_Playtime;
19 bool m_LogPlayerStats;
20 Shape m_VehicleFreeAreaBox;
21 ref EnvDebugData m_EnvDebugData;
22 ref FallDamageDebugData m_FallDamageDebugData;
23#ifndef SERVER
24 ref WeaponLiftDiag m_WeaponLiftDiag = new WeaponLiftDiag();
25 #ifdef DEVELOPER
26 ref UndergroundDiag m_UndergroundDiag = new UndergroundDiag();
27 #endif
28#endif
29
30 static ref ScriptInvoker m_SBDiagScriptInvoker = new ScriptInvoker();
31
32 override void OnInit()
33 {
34 super.OnInit();
35
36 BindCallbacks();
37 }
38
39 protected void BindCallbacks()
40 {
41 //---------------------------------------------------------------
42 // LEVEL 2 - Script > Inventory
43 //---------------------------------------------------------------
44 DiagMenu.BindCallback(DiagMenuIDs.INVENTORY_USE_ACK_MOVE_HANDS, CBInventoryHandsAckMove);
45 DiagMenu.BindCallback(DiagMenuIDs.INVENTORY_ENABLE_DESYNC_REPAIR, CBEnableDesyncRepair);
46
47 //---------------------------------------------------------------
48 // LEVEL 2 - Script > Crafting
49 //---------------------------------------------------------------
50 DiagMenu.BindCallback(DiagMenuIDs.CRAFTING_GENERATE, CBCraftingGenerate);
51 DiagMenu.BindCallback(DiagMenuIDs.CRAFTING_INSTANT, CBCraftingInstant);
52 DiagMenu.BindCallback(DiagMenuIDs.CRAFTING_DUMP, CBCraftingDump);
53
54 //---------------------------------------------------------------
55 // LEVEL 2 - Script > Vehicles
56 //---------------------------------------------------------------
57 DiagMenu.BindCallback(DiagMenuIDs.VEHICLE_DEBUG_OUTPUT, CBVehicleDebugOutput);
58 DiagMenu.BindCallback(DiagMenuIDs.VEHICLE_DUMP_CRASH_DATA, CBDumpCrashData);
59
60 //---------------------------------------------------------------
61 // LEVEL 2 - Script > Cheats
62 //---------------------------------------------------------------
63 DiagMenu.BindCallback(DiagMenuIDs.CHEATS_MODIFIERS, CBCheatsModifiers);
64 DiagMenu.BindCallback(DiagMenuIDs.CHEATS_KILL_PLAYER, CBCheatsKillPlayer);
65 DiagMenu.BindCallback(DiagMenuIDs.CHEATS_INVINCIBILITY, CBCheatsInvincibility);
66 DiagMenu.BindCallback(DiagMenuIDs.CHEATS_DISABLE_STAMINA, CBCheatsStaminaDisable);
67 DiagMenu.BindCallback(DiagMenuIDs.CHEATS_RESET_PLAYER, CBCheatsResetPlayer);
68 DiagMenu.BindCallback(DiagMenuIDs.CHEATS_RESET_PLAYER_MAX, CBCheatsResetPlayerMax);
69 DiagMenu.BindCallback(DiagMenuIDs.CHEATS_INVENTORY_ACCESS, CBCheatsInventoryAccess);
70 DiagMenu.BindCallback(DiagMenuIDs.CHEATS_FIX_ITEMS, CBCheatsFixItems);
71 DiagMenu.BindCallback(DiagMenuIDs.CHEATS_CREATE_HIT, CBCreateHit);
72 DiagMenu.BindCallback(DiagMenuIDs.CHEATS_CREATE_HIT_LIGHT, CBCreateHitLight);
73 DiagMenu.BindCallback(DiagMenuIDs.CHEATS_CLIENT_DESYNC_INVENTORY, CBClientDesync);
74
75 //---------------------------------------------------------------
76 // LEVEL 2 - Script > Player Agents
77 //---------------------------------------------------------------
78 DiagMenu.BindCallback(DiagMenuIDs.PLAYER_AGENTS_INJECTS_SHOW, CBPlayerAgentsInjectActions);
79
80 //---------------------------------------------------------------
81 // LEVEL 2 - Script > Soft Skills
82 //---------------------------------------------------------------
83 DiagMenu.BindCallback(DiagMenuIDs.SOFT_SKILLS_SHOW_DEBUG, CBSoftSkillsShowDebug);
84 DiagMenu.BindCallback(DiagMenuIDs.SOFT_SKILLS_TOGGLE_STATE, CBSoftSkillsToggleState);
85 DiagMenu.BindCallback(DiagMenuIDs.SOFT_SKILLS_TOGGLE_MODEL, CBSoftSkillsToggleModel);
86 DiagMenu.BindCallback(DiagMenuIDs.SOFT_SKILLS_SPECIALTY_VALUE, CBSoftSkillsSpecialtyValue);
87
88 //---------------------------------------------------------------
89 // LEVEL 2 - Script > Lifespan
90 //---------------------------------------------------------------
91 DiagMenu.BindCallback(DiagMenuIDs.LIFESPAN_BLOODY_HANDS, CBLifespanBloodyHands);
92 DiagMenu.BindCallback(DiagMenuIDs.LIFESPAN_PLAYTIME_UPDATE, CBLifespanPlaytimeUpdate);
93
94 //---------------------------------------------------------------
95 // LEVEL 2 - Script > Misc
96 //---------------------------------------------------------------
97 DiagMenu.BindCallback(DiagMenuIDs.MISC_DISABLE_PERSONAL_LIGHT, CBMiscPersonalLight);
98 DiagMenu.BindCallback(DiagMenuIDs.MISC_ITEM_DEBUG_ACTIONS, CBMiscItemDebugActions); // Is enabled by default now
99 DiagMenu.BindCallback(DiagMenuIDs.MISC_LOG_PLAYER_STATS, CBMiscLogPlayerStats);
100 DiagMenu.BindCallback(DiagMenuIDs.MISC_FORCE_HINT_INDEX, CBMiscForceHintIndex);
101
102 //---------------------------------------------------------------
103 // LEVEL 2 - Script > Misc -> Environment
104 //---------------------------------------------------------------
105 DiagMenu.BindCallback(DiagMenuIDs.MISC_ENVIRONMENT_DEBUG, CBMiscEnvironmentDebug);
106 #ifdef ENABLE_LOGGING
107 DiagMenu.BindCallback(DiagMenuIDs.MISC_ENVIRONMENT_LOGGING_DRYWET, CBMiscEnvironmentLoggingDryWet);
108 DiagMenu.BindCallback(DiagMenuIDs.MISC_ENVIRONMENT_LOGGING_ITEMHEAT, CBMiscEnvironmentLoggingItemHeat);
109 #endif
110
111 //---------------------------------------------------------------
112 // LEVEL 2 - Script > Misc
113 //---------------------------------------------------------------
114 DiagMenu.BindCallback(DiagMenuIDs.MISC_PERMANENT_CROSSHAIR, CBMiscPermanentCrossHair);
115 DiagMenu.BindCallback(DiagMenuIDs.MISC_TOGGLE_HUD, CBMiscToggleHud);
116 DiagMenu.BindCallback(DiagMenuIDs.MISC_FALLDAMAGE_DEBUG, CBMiscFallDamageDebug);
117 DiagMenu.BindCallback(DiagMenuIDs.MISC_DISPLAY_PLAYER_INFO, CBMiscDisplayPlayerInfo);
118 DiagMenu.BindCallback(DiagMenuIDs.MISC_UNIVERSAL_TEMPERATURE_SOURCES, CBMiscUniversalTemperatureSources);
119 DiagMenu.BindCallback(DiagMenuIDs.MISC_BULLET_IMPACT, CBMiscBulletImpact);
120 DiagMenu.BindCallback(DiagMenuIDs.MISC_GO_UNCONSCIOUS, CBMiscGoUnconscious);
121 DiagMenu.BindCallback(DiagMenuIDs.MISC_GO_UNCONSCIOUS_DELAYED, CBMiscGoUnconsciousDelayed);
122 DiagMenu.BindCallback(DiagMenuIDs.MISC_QUICK_RESTRAIN, CBMiscQuickRestrain);
123
124 //---------------------------------------------------------------
125 // LEVEL 3 - Script > Misc > Hair Hiding
126 //---------------------------------------------------------------
127 DiagMenu.BindCallback(DiagMenuIDs.MISC_HAIR_LEVEL_HIDE, CBMiscHairHide);
128 DiagMenu.BindCallback(DiagMenuIDs.MISC_HAIR_HIDE_ALL, CBMiscHairHideAll);
129
130 //---------------------------------------------------------------
131 // LEVEL 2 - Script > Misc
132 //---------------------------------------------------------------
133 DiagMenu.BindCallback(DiagMenuIDs.MISC_CAM_SHAKE, CBMiscCamShake);
134 DiagMenu.BindCallback(DiagMenuIDs.MISC_QUICK_FISHING, CBMiscQuickFishing);
135 DiagMenu.BindCallback(DiagMenuIDs.MISC_SHOCK_IMPACT, CBMiscShockImpact);
136 DiagMenu.BindCallback(DiagMenuIDs.MISC_SHOW_PLUG_ARROWS, CBMiscPlugArrows);
137 DiagMenu.BindCallback(DiagMenuIDs.MISC_TARGETABLE_BY_AI, CBMiscTargetableByAI);
138
139 //---------------------------------------------------------------
140 // LEVEL 3 - Script > Misc > Hit Indication
141 //---------------------------------------------------------------
142 DiagMenu.BindCallback(DiagMenuIDs.MISC_HIT_INDICATION_DEBUG, CBMiscHitIndication);
143 DiagMenu.BindCallback(DiagMenuIDs.MISC_HIT_INDICATION_SPAWN_HIT, CBMiscHitIndicationSpawnHit);
144 DiagMenu.BindCallback(DiagMenuIDs.MISC_HIT_INDICATION_MODE, CBMiscHitIndication);
145 DiagMenu.BindCallback(DiagMenuIDs.MISC_HIT_INDICATION_TYPE, CBMiscHitIndication);
146 DiagMenu.BindCallback(DiagMenuIDs.MISC_HIT_INDICATION_DURATION, CBMiscHitIndication);
147 DiagMenu.BindCallback(DiagMenuIDs.MISC_HIT_INDICATION_BREAKPOINT, CBMiscHitIndication);
148 DiagMenu.BindCallback(DiagMenuIDs.MISC_HIT_INDICATION_DISTANCE, CBMiscHitIndication);
149 DiagMenu.BindCallback(DiagMenuIDs.MISC_HIT_INDICATION_ROTATION, CBMiscHitIndication);
150 DiagMenu.BindCallback(DiagMenuIDs.MISC_HIT_INDICATION_SCATTER, CBMiscHitIndication);
151 DiagMenu.BindCallback(DiagMenuIDs.MISC_HIT_INDICATION_DISABLE_PPE, CBMiscHitIndication);
152
153 //---------------------------------------------------------------
154 // LEVEL 2 - Script > Misc
155 //---------------------------------------------------------------
156 DiagMenu.BindCallback(DiagMenuIDs.MISC_FREEZE_ENTITY, CBMiscFreezeEntity);
157 DiagMenu.BindCallback(DiagMenuIDs.MISC_FREEZE_PLAYER, CBMiscFreezePlayer);
158 DiagMenu.BindCallback(DiagMenuIDs.MISC_DEBUG_MONITOR, CBDebugMonitor);
159 DiagMenu.BindCallback(DiagMenuIDs.MISC_SHOW_PRA_ALL, CBPRADrawAll);
160 DiagMenu.BindCallback(DiagMenuIDs.MISC_PRA_DETECT, CBPRADetect);
161
162 //---------------------------------------------------------------
163 // LEVEL 2 - Script > Simulate script
164 //---------------------------------------------------------------
165 DiagMenu.BindCallback(DiagMenuIDs.SIMULATE_INFINITE_LOOP, CBSimulateInfiniteLoop);
166 DiagMenu.BindCallback(DiagMenuIDs.SIMULATE_NULL_POINTER, CBSimulateNullPointer);
167 DiagMenu.BindCallback(DiagMenuIDs.SIMULATE_DIVISION_BY_ZERO, CBSimulateDivisionByZero);
168 DiagMenu.BindCallback(DiagMenuIDs.SIMULATE_ERROR_FUNCTION, CBSimulateErrorFunction);
169
170 //---------------------------------------------------------------
171 // LEVEL 2 - Script > Weapon
172 //---------------------------------------------------------------
173 DiagMenu.BindCallback(DiagMenuIDs.WEAPON_PARTICLES, CBWeaponParticles);
174 DiagMenu.BindCallback(DiagMenuIDs.WEAPON_AIM_NOISE, CBWeaponAimNoise);
175 DiagMenu.BindCallback(DiagMenuIDs.WEAPON_RECOIL, CBWeaponRecoil);
176 DiagMenu.BindCallback(DiagMenuIDs.WEAPON_UNLIMITED_AMMO, CBWeaponUnlimitedAmmo);
177 DiagMenu.BindCallback(DiagMenuIDs.WEAPON_BURST_VERSION, CBWeaponBurstVersion);
178
179 //---------------------------------------------------------------
180 // LEVEL 2 - Script > Bleeding
181 //---------------------------------------------------------------
182 DiagMenu.BindCallback(DiagMenuIDs.BLEEDING_SOURCES, CBBleedingSources);
183 DiagMenu.BindCallback(DiagMenuIDs.BLEEDING_DISABLE_BLOOD_LOSS, CBBleedingDisableBloodLoss);
184 DiagMenu.BindCallback(DiagMenuIDs.BLEEDING_ACTIVATE_SOURCE, CBBleedingActivateSource);
185 DiagMenu.BindCallback(DiagMenuIDs.BLEEDING_ACTIVATE_ALL_SOURCES, CBBleedingActivateAllSources);
186 DiagMenu.BindCallback(DiagMenuIDs.BLEEDING_ACTIVATE_SOURCE_LEVEL, CBBleedingActivateSourceLevel);
187 DiagMenu.BindCallback(DiagMenuIDs.BLEEDING_RELOAD, CBBleedingReload);
188
189 //---------------------------------------------------------------
190 // LEVEL 3 - Script > Bleeding > Bleeding Indication
191 //---------------------------------------------------------------
192 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS, CBBBleedingIndicators);
193 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_USEVALUEOVERRIDES, CBBBleedingIndicators);
194 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_RANDOMROTATION, CBBBleedingIndicators);
195 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_SEQUENCE_DURATION, CBBBleedingIndicators);
196 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_BASEDURATION, CBBBleedingIndicators);
197 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_MINDELAY, CBBBleedingIndicators);
198 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_MAXDELAY, CBBBleedingIndicators);
199 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_PROGRESSTHRESHOLD, CBBBleedingIndicators);
200 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_STARTSIZE, CBBBleedingIndicators);
201 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_ENDSIZE, CBBBleedingIndicators);
202 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_RNDSCALEMIN, CBBBleedingIndicators);
203 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_RNDSCALEMAX, CBBBleedingIndicators);
204 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_SCATTER, CBBBleedingIndicators);
205 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_SLIDEDISTANCE, CBBBleedingIndicators);
206
207 //---------------------------------------------------------------
208 // LEVEL 4 - Script > Bleeding > Bleeding Indication > Color Debug
209 //---------------------------------------------------------------
210 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_ENABLEDESATURATION, CBBBleedingIndicators);
211 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_DESATURATIONEND, CBBBleedingIndicators);
212 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_R, CBBBleedingIndicators);
213 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_G, CBBBleedingIndicators);
214 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_B, CBBBleedingIndicators);
215 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_A_START, CBBBleedingIndicators);
216 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_A_END, CBBBleedingIndicators);
217
218 //---------------------------------------------------------------
219 // LEVEL 2 - Script > Logs
220 //---------------------------------------------------------------
221 DiagMenu.BindCallback(DiagMenuIDs.LOGS_ACTIONS, CBLogsActions);
222 DiagMenu.BindCallback(DiagMenuIDs.LOGS_WEAPONS, CBLogsWeapons);
223 DiagMenu.BindCallback(DiagMenuIDs.LOGS_SYNC, CBLogsSync);
224 DiagMenu.BindCallback(DiagMenuIDs.LOGS_BASEBUILDING, CBLogsBaseBuilding);
225 DiagMenu.BindCallback(DiagMenuIDs.LOGS_SYMPTOMS, CBLogsSymptoms);
226 DiagMenu.BindCallback(DiagMenuIDs.LOGS_BLEEDING_CHANCES, CBLogsBleedingChances);
227 DiagMenu.BindCallback(DiagMenuIDs.LOGS_QUICKBAR, CBLogsQuickbar);
228
229 //---------------------------------------------------------------
230 // LEVEL 3 - Script > Logs > InventoryLogs
231 //---------------------------------------------------------------
232 DiagMenu.BindCallback(DiagMenuIDs.LOGS_INVENTORY_MOVE, CBLogsInventoryMove);
233 DiagMenu.BindCallback(DiagMenuIDs.LOGS_INVENTORY_RESERVATION, CBLogsInventoryReservation);
234 DiagMenu.BindCallback(DiagMenuIDs.LOGS_INVENTORY_HFSM, CBLogsInventoryHFSM);
235
236 //---------------------------------------------------------------
237 // LEVEL 2 - Script > Triggers
238 //---------------------------------------------------------------
239 DiagMenu.BindCallback(DiagMenuIDs.TRIGGER_DEBUG, CBTriggerDebug);
240
241 //---------------------------------------------------------------
242 // LEVEL 2 - Script > Base Building
243 //---------------------------------------------------------------
244 DiagMenu.BindCallback(DiagMenuIDs.BASEBUILDING_WOOD, CBBaseBuildingWood);
245 DiagMenu.BindCallback(DiagMenuIDs.BASEBUILDING_GATE, CBBaseBuildingGate);
246
247 //---------------------------------------------------------------
248 // LEVEL 2 - Script > Finishers
249 //---------------------------------------------------------------
250 DiagMenu.BindCallback(DiagMenuIDs.FINISHERS_FINISHER_FORCED, CBFinishersFinisherForced);
251
252 //---------------------------------------------------------------
253 // LEVEL 2 - Script > Cinematic Camera Tools
254 //---------------------------------------------------------------
255 DiagMenu.BindCallback(DiagMenuIDs.CAMERATOOLS_ENABLE_REMOTE_CAMERA, CBCameraToolsEnableRemoteCamera);
256
257 //---------------------------------------------------------------
258 // LEVEL 2 - Script > Server Browser
259 //---------------------------------------------------------------
260 DiagMenu.BindCallback(DiagMenuIDs.SERVER_BROWSER_DUMMY_SERVERS, CBUpdateSBDummyServers);
261 }
262
263 //---------------------------------------------
264 override void OnRPC(PlayerBase player, int rpc_type, ParamsReadContext ctx)
265 {
266 super.OnRPC(player, rpc_type, ctx);
267
268 switch (rpc_type)
269 {
270 case ERPCs.DIAG_MISC_ENVIRONMENT_DEBUG_DATA:
271 {
272 if (!m_EnvDebugData)
273 m_EnvDebugData = new EnvDebugData();
274
275 ctx.Read(m_EnvDebugData);
276 break;
277 }
278
279 case ERPCs.DIAG_MISC_FALLDAMAGE_DEBUG_DATA:
280 {
281 if (!m_FallDamageDebugData)
282 m_FallDamageDebugData = new FallDamageDebugData();
283
284 ctx.Read(m_FallDamageDebugData);
285 break;
286 }
287
288 case ERPCs.DIAG_VEHICLES_DUMP_CRASH_DATA_CONTENTS:
289 {
290 Param1<array<ref CrashDebugData>> par = new Param1<array<ref CrashDebugData>>(null);
291
292 if (ctx.Read(par))
293 CrashDebugData.DumpDataArray(par.param1);
294 break;
295 }
296 }
297 }
298
299 //---------------------------------------------
300 override void OnUpdate(float delta_time)
301 {
302 super.OnUpdate(delta_time);
303
304 //---------------------------------------------
305 // every system can handle their own actions locally(within the system itself),
306 // this section is for systems which don't have client side representation,
307 // or don't have their own tick, or for whatever other reason you prefer to put the logic here
308 // PUT ONLY METHOD CALLS HERE, NO CODE !!
309 // PUT ONLY METHOD CALLS HERE, NO CODE !!
310 //---------------------------------------------
311
312 UpdateMiscVehicleGetOutBox();
313 UpdateEnvironmentDebug();
314 CheckTimeAccel();
315 UpdateMaterialDebug();
316 UpdateWeaponLiftDiag(delta_time);
317 #ifdef DEVELOPER // TODO@RR - temporary,
318 UpdateUndegroundDiag(delta_time);
319 #endif
320 }
321
322 //---------------------------------------------
323 void CheckTimeAccel()
324 {
325 if (!FeatureTimeAccel.m_CurrentTimeAccel)
326 {
327 InitTimeAccel();
328 }
329
330 if (g_Game && g_Game.GetPlayer())
331 {
332 TimeAccelParam param = GetTimeAccelMenuState();
333
334 if (!FeatureTimeAccel.AreTimeAccelParamsSame(param, FeatureTimeAccel.m_CurrentTimeAccel))
335 {
336 int timeAccelBig = param.param2;
337 float timeAccelSmall = param.param2 - timeAccelBig;
338 FeatureTimeAccel.CopyTimeAccelClipboard(param.param1, timeAccelBig, timeAccelSmall, param.param3 );
339 FeatureTimeAccel.SendTimeAccel(g_Game.GetPlayer(), param);
340 FeatureTimeAccel.m_CurrentTimeAccel = param;
341 }
342 }
343
344 }
345
346 static void CBInventoryHandsAckMove(bool enable, int id)
347 {
348 PluginInventoryDebug pluginInventoryDebug = PluginInventoryDebug.Cast(GetPlugin(PluginInventoryDebug));
349 DiagToggleRPCServer(enable, pluginInventoryDebug.m_IsHandAckEnable, ERPCs.DIAG_INVENTORY_ACK_HANDS);
350 }
351
352 static void CBEnableDesyncRepair(bool enable, int id)
353 {
354 PluginInventoryDebug pluginInventoryDebug = PluginInventoryDebug.Cast(GetPlugin(PluginInventoryDebug));
355 DiagToggleRPCServer(enable, pluginInventoryDebug.m_IsDesyncRepairEnable, ERPCs.DIAG_INVENTORY_REPAIR_DESYNC);
356 }
357
358 static void CBClientDesync(bool enable, int id)
359 {
360 PluginInventoryDebug pluginInventoryDebug = PluginInventoryDebug.Cast(GetPlugin(PluginInventoryDebug));
361 pluginInventoryDebug.SetLocalOnlyMoveEnable(enable);
362 }
363
364 //---------------------------------------------
365 static void CBCraftingGenerate(bool enabled, int id)
366 {
367 PluginRecipesManager pluginRecipesManager = PluginRecipesManager.Cast(GetPlugin(PluginRecipesManager));
368 DiagButtonAction(enabled, id, ScriptCaller.Create(pluginRecipesManager.CallbackGenerateCache));
369 }
370
371 //---------------------------------------------
372 static void CBCraftingInstant(bool enabled)
373 {
374 PluginRecipesManager pluginRecipesManager = PluginRecipesManager.Cast(GetPlugin(PluginRecipesManager));
375 DiagToggleRPC(enabled, pluginRecipesManager.IsEnableDebugCrafting(), ERPCs.DIAG_CRAFTING_INSTANT);
376 }
377
378 //---------------------------------------------
379 static void CBCraftingDump(bool enabled, int id)
380 {
381 PluginRecipesManager pluginRecipesManager = PluginRecipesManager.Cast(GetPlugin(PluginRecipesManager));
382 DiagButtonAction(enabled, id, ScriptCaller.Create(pluginRecipesManager.GenerateHumanReadableRecipeList));
383 }
384
385 //---------------------------------------------
386 static void CBCheatsModifiers(bool enabled)
387 {
389 DiagToggleRPCServer(enabled, pluginDiag.m_ModifiersEnabled, ERPCs.DIAG_CHEATS_MODIFIERS);
390 }
391
392 //---------------------------------------------
393 static void CBCheatsKillPlayer(bool enabled, int id)
394 {
395 DiagButtonRPC(enabled, id, ERPCs.DIAG_CHEATS_KILL_PLAYER, true);
396 }
397
398 //---------------------------------------------
399 static void CBCheatsInvincibility(int value)
400 {
402 DiagToggleRPCServer(value, pluginDiag.m_IsInvincible, ERPCs.DIAG_CHEATS_INVINCIBILITY);
403 }
404
405 //---------------------------------------------
406 static void CBCheatsStaminaDisable(bool enabled)
407 {
408 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
409 if (player)
410 player.SetStaminaDisabled(enabled);
411
413 DiagToggleRPCServer(enabled, pluginDiag.m_StaminaDisabled, ERPCs.DIAG_CHEATS_DISABLE_STAMINA);
414 }
415
416 //---------------------------------------------
417 static void CBCheatsResetPlayer(bool enabled, int id)
418 {
419 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
420 if (player)
421 player.ResetPlayer(false);
422 DiagButtonRPC(enabled, id, ERPCs.DIAG_CHEATS_RESET_PLAYER, true);
423 }
424
425 //---------------------------------------------
426 static void CBCheatsResetPlayerMax(bool enabled, int id)
427 {
428 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
429 if (player)
430 player.ResetPlayer(true);
431 DiagButtonRPC(enabled, id, ERPCs.DIAG_CHEATS_RESET_PLAYER_MAX, true);
432 }
433
434 //---------------------------------------------
435 static void CBCheatsInventoryAccess(bool enabled)
436 {
437 DiagToggleRPCServer(enabled, PlayerBase.DEBUG_INVENTORY_ACCESS, ERPCs.DIAG_CHEATS_INVENTORY_ACCESS);
438 }
439
440 //---------------------------------------------
441 static void CBCheatsFixItems(bool enabled, int id)
442 {
443 DiagButtonRPC(enabled, id, ERPCs.DIAG_CHEATS_ITEMS_FIX, true);
444 }
445
446 static void CBCreateHit(bool enabled, int id)
447 {
448 DiagButtonRPC(enabled, id, ERPCs.DIAG_CHEATS_CREATE_HIT, true);
449 }
450
451 static void CBCreateHitLight(bool enabled, int id)
452 {
453 DiagButtonRPC(enabled, id, ERPCs.DIAG_CHEATS_CREATE_HIT_LIGHT, true);
454 }
455
456 //---------------------------------------------
457 static void CBPlayerAgentsInjectActions(bool enabled)
458 {
459 DiagDebugAction(DebugActionType.PLAYER_AGENTS, enabled);
460 }
461
462 //---------------------------------------------
463 static void CBSoftSkillsShowDebug(bool enabled)
464 {
465 SoftSkillsManager ssMngr = GetPlayer().GetSoftSkillsManager();
466 DiagToggleRPCAction(enabled, ScriptCaller.Create(ssMngr.CreateDebugWindow), ssMngr.IsDebug(), ERPCs.DIAG_SOFT_SKILLS_SHOW_DEBUG);
467 }
468
469 //---------------------------------------------
470 static void CBSoftSkillsToggleState(bool enabled)
471 {
472 SoftSkillsManager ssMngr = GetPlayer().GetSoftSkillsManager();
473 DiagToggleRPC(enabled, ssMngr.GetSoftSkillsState(), ERPCs.DIAG_SOFT_SKILLS_TOGGLE_STATE);
474 }
475
476 //---------------------------------------------
477 static void CBSoftSkillsToggleModel(bool enabled)
478 {
479 SoftSkillsManager ssMngr = GetPlayer().GetSoftSkillsManager();
480 DiagToggleRPC(enabled, ssMngr.IsLinear(), ERPCs.DIAG_SOFT_SKILLS_TOGGLE_MODEL);
481 }
482
483 //---------------------------------------------
484 static void CBSoftSkillsSpecialtyValue(float value)
485 {
486 SoftSkillsManager ssMngr = GetPlayer().GetSoftSkillsManager();
487 DiagToggleRPC(value, ssMngr.GetSpecialtyLevel(), ERPCs.DIAG_SOFT_SKILLS_SPECIALTY_VALUE);
488 }
489
490 //---------------------------------------------
491 static void CBLifespanBloodyHands(bool enabled)
492 {
493 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
494 if (player)
495 {
496 bool hasBloodyHands = player.HasBloodyHands();
497 DiagToggleRPCServer(enabled, hasBloodyHands, ERPCs.DIAG_LIFESPAN_BLOODY_HANDS);
498 }
499 }
500
501 //---------------------------------------------
502 static void CBLifespanPlaytimeUpdate(float value)
503 {
505 DiagToggleRPCServer(value * 60, pluginDiag.m_Playtime, ERPCs.DIAG_LIFESPAN_PLAYTIME_UPDATE);
506 }
507
508 //---------------------------------------------
509 static void CBMiscPersonalLight(bool enabled)
510 {
511 PlayerBaseClient.m_PersonalLightDisabledByDebug = enabled;
512 PlayerBaseClient.UpdatePersonalLight();
513 }
514
515 //---------------------------------------------
516 static void CBMiscItemDebugActions(bool enabled)
517 {
518 DiagDebugAction(DebugActionType.GENERIC_ACTIONS, enabled);
519 }
520
521 //---------------------------------------------
522 static void CBMiscLogPlayerStats(bool enabled)
523 {
525 DiagToggleRPC(enabled, pluginDiag.m_LogPlayerStats, ERPCs.DIAG_MISC_LOG_PLAYER_STATS);
526 }
527
528 //---------------------------------------------
529 static void CBMiscForceHintIndex(int index)
530 {
531 UiHintPanel.m_ForcedIndex = index;
532 }
533
534 //---------------------------------------------
535 static void CBMiscPermanentCrossHair(bool enabled)
536 {
537 PluginPermanentCrossHair crosshair = PluginPermanentCrossHair.Cast(GetPlugin(PluginPermanentCrossHair));
538 crosshair.SwitchPermanentCrossHair(enabled);
539 }
540
541 //---------------------------------------------
542 void UpdateMiscVehicleGetOutBox()
543 {
544 if ( DiagMenu.GetBool(DiagMenuIDs.MISC_VEHICLE_GETOUT_BOX) )
545 {
546 if (m_VehicleFreeAreaBox)
547 {
548 m_VehicleFreeAreaBox.Destroy();
549 m_VehicleFreeAreaBox = null;
550 }
551
552 HumanCommandVehicle hcv = g_Game.GetPlayer().GetCommand_Vehicle();
553 if (!hcv)
554 return;
555
556 m_VehicleFreeAreaBox = hcv.GetTransport().DebugFreeAreaAtDoor( hcv.GetVehicleSeat() );
557 }
558 else if (m_VehicleFreeAreaBox)
559 {
560 m_VehicleFreeAreaBox.Destroy();
561 m_VehicleFreeAreaBox = null;
562 }
563 }
564
565 //---------------------------------------------
566 static void CBMiscToggleHud(bool enabled)
567 {
568 Mission mission = g_Game.GetMission();
569 mission.GetHud().Show(!enabled);
570 if (enabled)
571 {
572 mission.HideCrosshairVisibility();
573 }
574 else
575 {
576 mission.RefreshCrosshairVisibility();
577 }
578 }
579
580 //---------------------------------------------
581 static void CBMiscEnvironmentDebug(bool enabled)
582 {
583 SendDiagRPC(enabled, ERPCs.DIAG_MISC_ENVIRONMENT_DEBUG);
584 }
585
586 void UpdateEnvironmentDebug()
587 {
588 if (DiagMenu.GetBool(DiagMenuIDs.MISC_ENVIRONMENT_DEBUG) && m_EnvDebugData)
589 Environment.DisplayEnvDebugPlayerInfo(true, m_EnvDebugData);
590 else if (m_EnvDebugData)
591 m_EnvDebugData = null;
592 }
593
594 //---------------------------------------------
595 void UpdateMaterialDebug()
596 {
597 if (DiagMenu.GetBool(DiagMenuIDs.MATERIALDIAG_GHOSTPP))
598 {
599 MatGhostDebug();
600 }
601 }
602
603 //---------------------------------------------
604 void UpdateWeaponLiftDiag(float delta_time)
605 {
606 #ifndef SERVER
607 int weaponLiftDebug = DiagMenu.GetValue(DiagMenuIDs.WEAPON_LIFT_DEBUG);
608 if (weaponLiftDebug)
609 {
610 GetWeaponLiftDiag().DrawDiag(weaponLiftDebug, delta_time);
611 }
612 #endif
613 }
614
615 #ifndef SERVER
616 //---------------------------------------------
617 static WeaponLiftDiag GetWeaponLiftDiag()
618 {
620 return pluginDiag.m_WeaponLiftDiag;
621 }
622 #endif
623
624 void UpdateUndegroundDiag(float deltaTIme)
625 {
626 #ifndef SERVER
627 #ifdef DEVELOPER
628 if (DiagMenu.GetBool(DiagMenuIDs.UNDERGROUND_DEBUG))
629 m_UndergroundDiag.DrawDiag(deltaTIme);
630 #endif
631 #endif
632 }
633
634 //---------------------------------------------
635 void MatGhostDebug()
636 {
637 string materialPath = "Graphics/Materials/postprocess/ghost";
638 Material material = g_Game.GetWorld().GetMaterial(materialPath);
639 if (!material)
640 {
641 DiagMenu.SetValue(DiagMenuIDs.MATERIALDIAG_GHOSTPP, 0);
642 return;
643 }
644
645 DbgUI.Begin("GhostEffect Debug");
646 {
647 float channelWeights[] = { 0, 0, 0, 0 };
648 float noiseOffset[] = { 0, 0 };
649 float noiseScale[] = { 1, 1 };
650 float noiseLo[] = { 0, 0, 0, 0 };
651 float noiseHi[] = { 1, 1, 1, 1 };
652 float ghostOffset[] = { 0, 0 };
653 float ghostScale[] = { 1, 1 };
654 float colormod[] = { 1, 1, 1, 0.5 };
655 int spacer_height = 10;
656
657 float rw, gw, bw, aw;
658 DbgUI.Text("noise_channel_weight");
659 {
660 DbgUI.InputFloat("noise_weight_r", rw);
661 DbgUI.InputFloat("noise_weight_g", gw);
662 DbgUI.InputFloat("noise_weight_b", bw);
663 DbgUI.InputFloat("noise_weight_a", aw);
664 }
665 DbgUI.Spacer(spacer_height);
666 //-------------------//
667 float nox, noy;
668 float nsx = 1, nsy = 1;
669 DbgUI.Text("noise_offset");
670 {
671 DbgUI.InputFloat("noise_offset_x", nox);
672 DbgUI.InputFloat("noise_offset_y", noy);
673 DbgUI.InputFloat("noise_scale_x", nsx);
674 DbgUI.InputFloat("noise_scale_y", nsy);
675 }
676 DbgUI.Spacer(spacer_height);
677 //-------------------//
678 float rl = 0, rh = 1;
679 float gl = 0, gh = 1;
680 float bl = 0, bh = 1;
681 float al = 0, ah = 1;
682 DbgUI.Text("noise_remap");
683 {
684 DbgUI.InputFloat("lo_r", rl);
685 DbgUI.SameLine();
686 DbgUI.InputFloat("hi_r", rh);
687
688 DbgUI.InputFloat("lo_g", gl);
689 DbgUI.SameLine();
690 DbgUI.InputFloat("hi_g", gh);
691
692 DbgUI.InputFloat("lo_b", bl);
693 DbgUI.SameLine();
694 DbgUI.InputFloat("hi_b", bh);
695
696 DbgUI.InputFloat("lo_a", al);
697 DbgUI.SameLine();
698 DbgUI.InputFloat("hi_a", ah);
699 }
700 DbgUI.Spacer(spacer_height);
701 //-------------------//
702 float gox = 50, goy = 25;
703 float gsx = 0.85, gsy = 0.85;
704 DbgUI.Text("ghost_offset");
705 {
706 DbgUI.InputFloat("ghost_offset_x", gox);
707 DbgUI.InputFloat("ghost_offset_y", goy);
708 DbgUI.InputFloat("ghost_scale_x", gsx);
709 DbgUI.InputFloat("ghost_scale_y", gsy);
710 }
711 DbgUI.Spacer(spacer_height);
712 //-------------------//
713 float cmr = 1, cmg = 1, cmb = 1, cma = 1;
714 DbgUI.Text("color_mod");
715 {
716 DbgUI.InputFloat("color_mod_r", cmr);
717 DbgUI.InputFloat("color_mod_g", cmg);
718 DbgUI.InputFloat("color_mod_b", cmb);
719 DbgUI.InputFloat("color_curve", cma);
720 }
721 DbgUI.Spacer(spacer_height);
722 //-------------------//
723 channelWeights = { rw, gw, bw, aw };
724 noiseOffset = { nox, noy };
725 noiseScale = { nsx, nsy };
726 noiseLo = { rl, gl, bl, al };
727 noiseHi = { rh, gh, bh, ah };
728 ghostOffset = { gox, goy };
729 ghostScale = { gsx, gsy };
730 colormod = { cmr, cmg, cmb, cma };
731
732 }
733 DbgUI.End();
734
735 material.SetParamByIndex(1, channelWeights);
736 material.SetParamByIndex(2, noiseOffset[0]);
737 material.SetParamByIndex(3, noiseOffset[1]);
738 material.SetParamByIndex(4, noiseScale[0]);
739 material.SetParamByIndex(5, noiseScale[1]);
740 material.SetParamByIndex(6, noiseLo);
741 material.SetParamByIndex(7, noiseHi);
742 material.SetParamByIndex(8, ghostOffset[0]);
743 material.SetParamByIndex(9, ghostOffset[1]);
744 material.SetParamByIndex(10, ghostScale[0]);
745 material.SetParamByIndex(11, ghostScale[1]);
746 material.SetParamByIndex(12, colormod );
747
748 }
749
750 #ifdef ENABLE_LOGGING
751 static void CBMiscEnvironmentLoggingDryWet(bool enabled)
752 {
753 SendDiagRPC(enabled, ERPCs.DIAG_MISC_ENVIRONMENT_LOGGING_DRYWET);
754 }
755
756 static void CBMiscEnvironmentLoggingItemHeat(bool enabled)
757 {
758 SendDiagRPC(enabled, ERPCs.DIAG_MISC_ENVIRONMENT_LOGGING_ITEMHEAT);
759 }
760 #endif
761
762 static void CBMiscFallDamageDebug(bool enabled)
763 {
764 SendDiagRPC(enabled, ERPCs.DIAG_MISC_FALLDAMAGE_DEBUG);
765 }
766
767 void UpdateFallDamageDebug()
768 {
769 if (DiagMenu.GetBool(DiagMenuIDs.MISC_FALLDAMAGE_DEBUG) && m_FallDamageDebugData)
770 DayZPlayerImplementFallDamage.DisplayFallDamageDebugInfo(true, m_FallDamageDebugData);
771 else if (m_FallDamageDebugData)
772 m_FallDamageDebugData = null;
773 }
774
775 //---------------------------------------------
776 static void CBMiscDisplayPlayerInfo(int value)
777 {
778 PluginRemotePlayerDebugClient prpdc = PluginRemotePlayerDebugClient.Cast(GetPlugin(PluginRemotePlayerDebugClient));
779 prpdc.RequestPlayerInfo(PlayerBase.Cast(g_Game.GetPlayer()), value);
780 }
781
782 //---------------------------------------------
783 static void CBMiscUniversalTemperatureSources(bool enabled)
784 {
786 client.RequestUniversalTemperatureSources(PlayerBase.Cast(g_Game.GetPlayer()), enabled);
787 }
788
789 //---------------------------------------------
790 static void CBMiscBulletImpact(bool enabled, int id)
791 {
792 PlayerBase player = GetPlayer();
795 DiagButtonActionParams(enabled, id, ScriptCaller.Create(player.SpawnDamageDealtEffect2), CachedObjectsParams.PARAM2_FLOAT_FLOAT);
796 }
797
798 //---------------------------------------------
799 static void CBMiscGoUnconscious(bool enabled, int id)
800 {
801 DiagButtonRPC(enabled, id, ERPCs.DIAG_MISC_GO_UNCONSCIOUS, true);
802 }
803
804 //---------------------------------------------
805 static void CBMiscGoUnconsciousDelayed(bool enabled, int id)
806 {
807 DiagButtonRPC(enabled, id, ERPCs.DIAG_MISC_GO_UNCONSCIOUS_DELAYED, true);
808 }
809
810 //---------------------------------------------
811 static void CBMiscQuickRestrain(bool enabled)
812 {
813 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
814 DiagToggleRPC(enabled, player.IsQuickRestrain(), ERPCs.DIAG_MISC_QUICK_RESTRAIN);
815 }
816
817 //---------------------------------------------
818 static void CBMiscHairHide(bool enabled, int id)
819 {
820 int value = DiagMenu.GetRangeValue(DiagMenuIDs.MISC_HAIR_LEVEL);
821 DiagButtonRPCIntInt(enabled, id, value, enabled, ERPCs.DIAG_MISC_HAIR_LEVEL_HIDE, true);
822 }
823
824 //---------------------------------------------
825 static void CBMiscHairHideAll(bool enabled)
826 {
828 CachedObjectsParams.PARAM2_INT_INT.param2 = enabled;
829
830 SendDiagRPC(CachedObjectsParams.PARAM2_INT_INT, ERPCs.DIAG_MISC_HAIR_LEVEL_HIDE, true);
831 }
832
833 //---------------------------------------------
834 static void CBMiscCamShake(bool enabled, int id)
835 {
836 DayZPlayerCamera cam = g_Game.GetPlayer().GetCurrentCamera();
837 DiagButtonAction(enabled, id, ScriptCaller.Create(cam.SpawnDiagCameraShake));
838 }
839
840 //---------------------------------------------
841 static void CBMiscQuickFishing(bool enabled)
842 {
843 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
844 DiagToggleRPC(enabled, player.IsQuickFishing(), ERPCs.DIAG_MISC_QUICK_FISHING);
845 }
846
847 //---------------------------------------------
848 static void CBMiscShockImpact(bool enabled, int id)
849 {
850 DiagButtonAction(enabled, id, ScriptCaller.Create(ShockImpact));
851 }
852
853 static void ShockImpact()
854 {
855 static float intensity;
856 intensity += 0.25;
857 intensity = Math.WrapFloat(intensity, 0.25, 1);
858
859 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
860 player.SpawnShockEffect(intensity);
861 }
862
863 //---------------------------------------------
864 static void CBMiscPlugArrows(bool enabled)
865 {
866 g_Game.EnableEMPlugs(enabled);
867 }
868
869 //---------------------------------------------
870 static void CBMiscTargetableByAI(bool enabled, int id)
871 {
872 PlayerBase player = GetPlayer();
873 if (player)
874 DiagToggleRPC(enabled, player.m_CanBeTargetedDebug, ERPCs.DIAG_MISC_TARGETABLE_BY_AI);
875 }
876
877 //---------------------------------------------
878 static void CBMiscHitIndication()
879 {
880 PlayerBase player = GetPlayer();
881
882 if (DiagMenu.GetBool(DiagMenuIDs.MISC_HIT_INDICATION_DEBUG))
883 {
884 HitDirectionEffectBase.m_Mode = DiagMenu.GetValue(DiagMenuIDs.MISC_HIT_INDICATION_MODE);
885 HitDirectionEffectBase.m_ID = DiagMenu.GetValue(DiagMenuIDs.MISC_HIT_INDICATION_TYPE);
890 HitDirectionEffectBase.m_Scatter = DiagMenu.GetRangeValue(DiagMenuIDs.MISC_HIT_INDICATION_SCATTER);
891
892 if (player)
893 {
894 player.SetHitPPEEnabled(!DiagMenu.GetBool(DiagMenuIDs.MISC_HIT_INDICATION_DISABLE_PPE));
895 }
896 }
897 else
898 {
900 if (player)
901 {
902 player.SetHitPPEEnabled(CfgGameplayHandler.GetHitIndicationPPEEnabled());
903 }
904 }
905 }
906
907 //---------------------------------------------
908 static void CBMiscHitIndicationSpawnHit(bool enabled, int id)
909 {
910 DiagButtonAction(enabled, id, ScriptCaller.Create(SpawnHitDirEffect));
911 }
912
913 static void SpawnHitDirEffect()
914 {
915 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
916 g_Game.GetMission().GetHud().SpawnHitDirEffect(player, DiagMenu.GetRangeValue(DiagMenuIDs.MISC_HIT_INDICATION_SPAWN_HIT_DIRECTION), 1.0);
917 }
918
919 //---------------------------------------------
920 static void CBDebugMonitor(bool enabled, int id)
921 {
922 SendDiagRPC(enabled, ERPCs.DIAG_MISC_DEBUG_MONITOR, true);
923
924 if (enabled)
925 g_Game.GetMission().CreateDebugMonitor();
926 else
927 g_Game.GetMission().HideDebugMonitor();
928 }
929
930 static void CBPRADrawAll(bool enabled, int id)
931 {
934 }
935
936 static void CBPRADetect(bool enabled, int id)
937 {
938 if (enabled)
939 {
940 DayZPlayer player = g_Game.GetPlayer();
942 bool res = CfgPlayerRestrictedAreaHandler.IsPointInPlayerRestrictedArea(player.GetPosition(),pra);
943 if (res)
944 Print("player: " + player + " | at position: " + player.GetPosition() + " | intersects area: " + pra.areaName);
945 else
946 Print("player: " + player + " | at position: " + player.GetPosition() + " | is NOT in any PlayerRestrictedArea");
947 }
948 DiagMenu.SetValue(DiagMenuIDs.MISC_PRA_DETECT, false);
949 }
950
951 //---------------------------------------------
952 static void CBMiscFreezeEntity(bool enabled, int id)
953 {
954 DiagButtonAction(enabled, id, ScriptCaller.Create(FreezeEntity));
955 }
956
957 static void FreezeEntity()
958 {
959 EntityAI entity;
960 if (PluginSceneManager.GetInstance() && PluginSceneManager.GetInstance().IsOpened())
961 {
962 // Scene Editor
963 SceneObject scene_obj = PluginSceneManager.GetInstance().GetSelectedSceneObject();
964
965 if (scene_obj)
966 {
967 entity = scene_obj.GetObject();
968 }
969 }
970 else
971 {
972 // FreeDebugCamera
973 FreeDebugCamera camera = FreeDebugCamera.GetInstance();
974 entity = EntityAI.Cast(camera.GetCrosshairObject());
975 }
976
977 if (entity)
978 entity.DisableSimulation(!entity.GetIsSimulationDisabled());
979 }
980
981 //---------------------------------------------
982 static void CBMiscFreezePlayer(bool enabled, int id)
983 {
984 DiagButtonAction(enabled, id, ScriptCaller.Create(FreezePlayer));
985 }
986
987 static void FreezePlayer()
988 {
989 EntityAI player = g_Game.GetPlayer();
990 if (player)
991 player.DisableSimulation(!player.GetIsSimulationDisabled());
992 }
993
994 //---------------------------------------------
995 static void CBVehicleDebugOutput(int value)
996 {
997
998 int bitValue = 0;
999 if (value == 1)//"Basic"
1000 {
1001 bitValue = EVehicleDebugOutputType.DAMAGE_APPLIED;
1002 }
1003 if (value == 2)//"Extended"
1004 {
1005 bitValue = EVehicleDebugOutputType.DAMAGE_APPLIED | EVehicleDebugOutputType.DAMAGE_CONSIDERED;
1006 }
1007 else if (value == 3)//"Contact"
1008 {
1009 bitValue = EVehicleDebugOutputType.CONTACT;
1010 }
1011 else if (value == 4)//"Basic" + "Contact"
1012 {
1013 bitValue = EVehicleDebugOutputType.DAMAGE_APPLIED | EVehicleDebugOutputType.CONTACT;
1014 }
1015 SendDiagRPC(bitValue, ERPCs.DIAG_VEHICLE_DEBUG_OUTPUT, true);
1016 }
1017
1018 //---------------------------------------------
1019 static void CBDumpCrashData(bool value)
1020 {
1021 if (value)
1022 {
1023 SendDiagRPC(true, ERPCs.DIAG_VEHICLES_DUMP_CRASH_DATA_REQUEST, true);
1024 DiagMenu.SetValue(DiagMenuIDs.VEHICLE_DUMP_CRASH_DATA, 0);
1025 }
1026 //DiagButtonRPC(value, DiagMenuIDs.VEHICLE_DUMP_CRASH_DATA, ERPCs.DIAG_VEHICLES_DUMP_CRASH_DATA_REQUEST, true);
1027
1028 }
1029
1030 //---------------------------------------------
1031 static void SimulateMode(bool enabled, int id, int rpc)
1032 {
1033 int value = DiagMenu.GetRangeValue(DiagMenuIDs.SIMULATE_MODE);
1034
1035 switch (value)
1036 {
1037 case 0:
1038 {
1039 DiagButtonRPC(enabled, id, rpc, true);
1040 break;
1041 }
1042 case 1:
1043 {
1044 DiagButtonRPCSelf(enabled, id, rpc);
1045 break;
1046 }
1047 case 2:
1048 {
1049 DiagButtonRPC(enabled, id, rpc, true);
1050 DiagButtonRPCSelf(enabled, id, rpc);
1051 break;
1052 }
1053 }
1054 }
1055
1056 //---------------------------------------------
1057 static void CBSimulateInfiniteLoop(bool enabled, int id)
1058 {
1059 SimulateMode(enabled, id, ERPCs.DIAG_SIMULATE_INFINITE_LOOP);
1060 }
1061
1062 //---------------------------------------------
1063 static void CBSimulateNullPointer(bool enabled, int id)
1064 {
1065 SimulateMode(enabled, id, ERPCs.DIAG_SIMULATE_NULL_POINTER);
1066 }
1067
1068 //---------------------------------------------
1069 static void CBSimulateDivisionByZero(bool enabled, int id)
1070 {
1071 SimulateMode(enabled, id, ERPCs.DIAG_SIMULATE_DIVISION_BY_ZERO);
1072 }
1073
1074 //---------------------------------------------
1075 static void CBSimulateErrorFunction(bool enabled, int id)
1076 {
1077 SimulateMode(enabled, id, ERPCs.DIAG_SIMULATE_ERROR_FUNCTION);
1078 }
1079
1080 //---------------------------------------------
1081 static void CBWeaponParticles(bool enabled)
1082 {
1083 DiagToggleRPCServer(enabled, PrtTest.m_GunParticlesState, ERPCs.DIAG_WEAPON_PARTICLES);
1084 }
1085
1086 //---------------------------------------------
1087 static void CBWeaponDebug(bool enabled)
1088 {
1089 PlayerBase player = GetPlayer();
1090 DiagToggleAction(enabled, ScriptCaller.Create(player.ShowWeaponDebug), player.IsWeaponDebugEnabled());
1091 }
1092
1093 //---------------------------------------------
1094 static void CBWeaponAimNoise(bool enabled)
1095 {
1096 PlayerBase player = GetPlayer();
1097 if (player)
1098 {
1099 DayZPlayerImplementAiming aimModel = player.GetAimingModel();
1100 DiagToggleAction(enabled, ScriptCaller.Create(aimModel.SetAimNoiseAllowed), aimModel.IsAimNoiseAllowed());
1101 }
1102 }
1103
1104 //---------------------------------------------
1105 static void CBWeaponRecoil(bool enabled)
1106 {
1107 PlayerBase player = GetPlayer();
1108 if (player)
1109 {
1110 DayZPlayerImplementAiming aimModel = player.GetAimingModel();
1111 DiagToggleRPC(enabled, aimModel.IsProceduralRecoilEnabled(), ERPCs.DIAG_WEAPON_RECOIL);
1112 }
1113 }
1114
1115 //---------------------------------------------
1116 static void CBWeaponUnlimitedAmmo(bool enabled)
1117 {
1118 DiagDebugAction(DebugActionType.UNLIMITED_AMMO, enabled);
1119 }
1120
1121 //---------------------------------------------
1122 static void CBWeaponBurstVersion(int value)
1123 {
1124 PlayerBase player = GetPlayer();
1125 WeaponManager wpnMngr = player.GetWeaponManager();
1126 DiagToggleRPC(value, wpnMngr.GetBurstOption(), ERPCs.DIAG_WEAPON_BURST_VERSION);
1127 }
1128
1129 //---------------------------------------------
1130 static void CBBleedingSources(bool enabled)
1131 {
1132 PlayerBase player = GetPlayer();
1133 player.GetBleedingManagerRemote().SetDiag(enabled);
1134 }
1135
1136 //---------------------------------------------
1137 static void CBBleedingDisableBloodLoss(bool enabled)
1138 {
1139 SendDiagRPC(enabled, ERPCs.DIAG_BLEEDING_DISABLE_BLOOD_LOSS, true);
1140 }
1141
1142 //---------------------------------------------
1143 static void CBBleedingActivateSource(int value)
1144 {
1145 SendDiagRPC(value, ERPCs.DIAG_BLEEDING_ACTIVATE_SOURCE, true);
1146 }
1147
1148 //---------------------------------------------
1149 static void CBBleedingActivateAllSources(bool enabled, int id)
1150 {
1151 DiagButtonRPC(enabled, id, ERPCs.DIAG_BLEEDING_ACTIVATE_ALL_SOURCES, true);
1152 }
1153
1154 //---------------------------------------------
1155 static void CBBleedingActivateSourceLevel(int value)
1156 {
1157 PlayerBase player = GetPlayer();
1158 BleedingSourcesManagerBase mgr = player.GetBleedingManagerRemote();
1159
1160 int idx = 100; //invalid index, just deletes all
1161 if (value != 0)
1162 {
1163 string bone = ""; //lower-case!
1164 switch (value)
1165 {
1166 case 1: //PlayerConstants.BLEEDING_SOURCE_FLOW_MODIFIER_LOW
1167 bone = "lefttoebase";
1168 break;
1169
1170 case 2: //PlayerConstants.BLEEDING_SOURCE_FLOW_MODIFIER_MEDIUM
1171 bone = "leftarm";
1172 break;
1173
1174 case 3: //PlayerConstants.BLEEDING_SOURCE_FLOW_MODIFIER_HIGH
1175 bone = "neck";
1176 break;
1177 }
1178
1179 int count = mgr.m_BleedingSourceZone.Count();
1180
1181 for (int i = 0; i < count; ++i)
1182 {
1183 if (mgr.m_BleedingSourceZone.GetKey(i) == bone)
1184 {
1185 idx = i;
1186 break;
1187 }
1188 }
1189 }
1190
1191 CBBleedingActivateSource(idx);
1192 }
1193
1194 //---------------------------------------------
1195 static void CBBleedingReload(bool enabled, int id)
1196 {
1197 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
1198 BleedingSourcesManagerRemote bsMngrRem = player.GetBleedingManagerRemote();
1199 DiagButtonAction(enabled, id, ScriptCaller.Create(bsMngrRem.Reload));
1200 }
1201
1202 //---------------------------------------------
1203 static void CBBBleedingIndicators()
1204 {
1205 bool diagEnable = DiagMenu.GetBool(DiagMenuIDs.BLEEDINGINDICATORS);
1207 {
1209 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
1210 if (player && player.GetBleedingManagerRemote())
1211 {
1212 player.GetBleedingManagerRemote().Reload();
1213 }
1214 }
1215
1217
1219 {
1232
1233 DbgBleedingIndicationStaticInfo.m_DbgDropDesaturate = DiagMenu.GetBool(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_ENABLEDESATURATION);
1234 DbgBleedingIndicationStaticInfo.m_DbgDesaturationEnd = DiagMenu.GetRangeValue(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_DESATURATIONEND);
1240 }
1241 }
1242
1243 //---------------------------------------------
1244 static void CBLogsActions(bool enabled)
1245 {
1246 DiagToggleRPC(enabled, LogManager.IsActionLogEnable(), ERPCs.DIAG_LOGS_ACTIONS);
1247 }
1248
1249 //---------------------------------------------
1250 static void CBLogsWeapons(bool enabled)
1251 {
1252 DiagToggleRPC(enabled, LogManager.IsWeaponLogEnable(), ERPCs.DIAG_LOGS_WEAPONS);
1253 }
1254
1255 //---------------------------------------------
1256 static void CBLogsSync(bool enabled)
1257 {
1258 DiagToggleRPC(enabled, LogManager.IsSyncLogEnable(), ERPCs.DIAG_LOGS_SYNC);
1259 }
1260
1261 //---------------------------------------------
1262 static void CBLogsBaseBuilding(bool enabled)
1263 {
1264 DiagToggleRPC(enabled, LogManager.IsBaseBuildingLogEnable(), ERPCs.DIAG_LOGS_BASEBUILDING);
1265 }
1266
1267 //---------------------------------------------
1268 static void CBLogsSymptoms(bool enabled)
1269 {
1270 DiagToggleRPC(enabled, LogManager.IsSymptomLogEnable(), ERPCs.DIAG_LOGS_SYMPTOMS);
1271 }
1272
1273 //---------------------------------------------
1274 static void CBLogsInventoryMove(bool enabled)
1275 {
1276 DiagToggleRPC(enabled, LogManager.IsInventoryMoveLogEnable(), ERPCs.DIAG_LOGS_INVENTORY_MOVE);
1277 }
1278
1279 //---------------------------------------------
1280 static void CBLogsInventoryReservation(bool enabled)
1281 {
1282 DiagToggleRPC(enabled, LogManager.IsInventoryReservationLogEnable(), ERPCs.DIAG_LOGS_INVENTORY_RESERVATION);
1283 }
1284
1285 //---------------------------------------------
1286 static void CBLogsInventoryHFSM(bool enabled)
1287 {
1288 DiagToggleRPC(enabled, LogManager.IsInventoryHFSMLogEnable(), ERPCs.DIAG_LOGS_INVENTORY_HFSM);
1289 }
1290
1291 //---------------------------------------------
1292 static void CBLogsQuickbar(bool enabled)
1293 {
1294 DiagToggleRPC(enabled, LogManager.IsQuickbarLogEnable(), ERPCs.DIAG_LOGS_QUICKBAR);
1295 }
1296
1297 //---------------------------------------------
1298 static void CBLogsBleedingChances(bool enabled)
1299 {
1300 DiagToggleRPC(enabled, LogManager.IsBleedingChancesLogEnable(), ERPCs.DIAG_LOGS_BLEEDING_CHANCES);
1301 }
1302
1303 //---------------------------------------------
1304 static void CBTriggerDebug(bool enabled)
1305 {
1306 EnableDebugSystemClient(ESubscriberSystems.TRIGGERS, enabled);
1307 }
1308
1309 //---------------------------------------------
1310 static void CBBaseBuildingWood(bool enabled)
1311 {
1312 SendDiagRPC(enabled, ERPCs.DIAG_BASEBUILDING_WOOD, true);
1313 }
1314
1315 //---------------------------------------------
1316 static void CBBaseBuildingGate(bool enabled)
1317 {
1318 SendDiagRPC(enabled, ERPCs.DIAG_BASEBUILDING_GATE, true);
1319 }
1320
1321 //---------------------------------------------
1322 static void CBFinishersFinisherForced(int value)
1323 {
1324 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
1325 DiagToggleRPC(value - 1, player.GetMeleeCombat().DebugGetForcedFinisherType(), ERPCs.DIAG_FINISHERS_FORCE_FINISHER);
1326 }
1327
1328 //---------------------------------------------
1329 static void CBCameraToolsEnableRemoteCamera(bool enabled)
1330 {
1331 PlayerBase player = GetPlayer();
1332
1333 if (!player)
1334 return;
1335
1336 if (!enabled && player.m_CameraToolsMenuClient)
1337 {
1338 player.m_CameraToolsMenuClient.DelayedDestroy();
1339 }
1340
1341 auto param = new Param2<bool, EntityAI>(enabled, g_Game.GetPlayer());
1342 g_Game.RPCSingleParam( null, ERPCs.DIAG_CAMERATOOLS_CAM_SUBSCRIBE, param, true );
1343 }
1344
1345 //---------------------------------------------
1346 // Misc
1347 //---------------------------------------------
1348 static PlayerBase GetPlayer()
1349 {
1350 if (!g_Game)
1351 return null;
1352
1353 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
1354
1355 if (DiagMenu.GetBool(DiagMenuIDs.MISC_ACTION_ON_CURSOR))
1356 {
1357 float hitFraction;
1358 vector start = g_Game.GetCurrentCameraPosition();
1359 vector end = start + (g_Game.GetCurrentCameraDirection() * 5.0);
1360
1361 vector hitPos, hitNormal;
1362 Object hitObj;
1363
1364 PhxInteractionLayers hitMask = 0xFFFFFFFFFF;
1365
1366 DayZPhysics.RayCastBullet(start, end, hitMask, null, hitObj, hitPos, hitNormal, hitFraction);
1367 Class.CastTo(player, hitObj);
1368 }
1369
1370 return player;
1371 }
1372
1373 //---------------------------------------------
1374 // DebugAction
1375 //---------------------------------------------
1376 static void DiagDebugAction(DebugActionType type, bool enable)
1377 {
1378 int mask;
1379 if (enable)
1380 {
1381 mask = (ItemBase.GetDebugActionsMask() | type);
1382 }
1383 else
1384 {
1385 mask = (ItemBase.GetDebugActionsMask() & (~type));
1386 }
1387
1388 DiagToggleRPCAction(mask, ScriptCaller.Create(ItemBase.SetDebugActionsMask), ItemBase.HasDebugActionsMask(type), ERPCs.DIAG_ITEM_DEBUG_ACTIONS);
1389 }
1390
1391 //---------------------------------------------
1392 // SubscriberClient
1393 //---------------------------------------------
1394 static void EnableDebugSystemClient(ESubscriberSystems system, bool enable)
1395 {
1396 int mask;
1397 if (enable)
1398 {
1399 mask = (m_SystemsMask | system);//turn on bit
1400 }
1401 else
1402 {
1403 mask = (m_SystemsMask & (~system));//turn off bit
1404 }
1405
1406 if (mask != m_SystemsMask)
1407 {
1408 CachedObjectsParams.PARAM1_INT.param1 = mask;
1409 g_Game.RPCSingleParam( g_Game.GetPlayer(), ERPCs.DEV_DIAGMENU_SUBSCRIBE, CachedObjectsParams.PARAM1_INT, true, g_Game.GetPlayer().GetIdentity() );
1410 m_SystemsMask = mask;
1411 }
1412 }
1413
1414
1415 //---------------------------------------------
1416 // Helper diag functions
1417 //---------------------------------------------
1418 static void DiagButtonActionParams(bool enabled, int id, ScriptCaller action, Param params)
1419 {
1420 if ( enabled )
1421 {
1422 action.Invoke(params);
1423 DiagMenu.SetValue(id, false);
1424 }
1425 }
1426
1427 //---------------------------------------------
1428 static void DiagButtonAction(bool enabled, int id, ScriptCaller action)
1429 {
1430 DiagButtonActionParams(enabled, id, action, null);
1431 }
1432
1433 //---------------------------------------------
1434 static void DiagButtonRPC(bool enabled, int id, int rpc, bool serverOnly = false)
1435 {
1436 ScriptCaller action = ScriptCaller.Create(SendDiagRPCBasic);
1437 SendDiagRPCBasicParam params = new SendDiagRPCBasicParam(rpc, serverOnly);
1438
1439 DiagButtonActionParams(enabled, id, action, params);
1440 }
1441
1442 //---------------------------------------------
1443 static void DiagButtonRPCSelf(bool enabled, int id, int rpc)
1444 {
1445 ScriptCaller action = ScriptCaller.Create(SendDiagRPCSelfBasic);
1446 SendDiagRPCSelfBasicParam params = new SendDiagRPCSelfBasicParam(rpc);
1447
1448 DiagButtonActionParams(enabled, id, action, params);
1449 }
1450
1451 //---------------------------------------------
1452 static void DiagButtonRPCIntInt(bool enabled, int id, int value, int value2, int rpc, bool serverOnly = false)
1453 {
1454 ScriptCaller action = ScriptCaller.Create(SendDiagRPCParam);
1455
1456 CachedObjectsParams.PARAM2_INT_INT.param1 = value;
1457 CachedObjectsParams.PARAM2_INT_INT.param2 = value2;
1458 SendDiagRPCParamParam params = new SendDiagRPCParamParam(rpc, serverOnly, CachedObjectsParams.PARAM2_INT_INT);
1459
1460 DiagButtonActionParams(enabled, id, action, params);
1461 }
1462
1463 //---------------------------------------------
1464 static void DiagToggleRPC(bool value, int current, int rpc)
1465 {
1466 if (value != current)
1467 {
1468 SendDiagRPC(value, rpc, false);
1469 }
1470 }
1471
1472 //---------------------------------------------
1473 static void DiagToggleRPC(int value, int current, int rpc)
1474 {
1475 if (value != current)
1476 {
1477 SendDiagRPC(value, rpc, false);
1478 }
1479 }
1480
1481 //---------------------------------------------
1482 static void DiagToggleRPC(float value, int current, int rpc)
1483 {
1484 if (value != current)
1485 {
1486 SendDiagRPC(value, rpc, false);
1487 }
1488 }
1489
1490 //---------------------------------------------
1491 static void DiagToggleRPCServer(bool value, out bool current, int rpc)
1492 {
1493 if (value != current)
1494 {
1495 current = value;
1496 SendDiagRPC(value, rpc, true);
1497 }
1498 }
1499
1500 //---------------------------------------------
1501 static void DiagToggleRPCServer(int value, out int current, int rpc)
1502 {
1503 if (value != current)
1504 {
1505 current = value;
1506 SendDiagRPC(value, rpc, true);
1507 }
1508 }
1509
1510 //---------------------------------------------
1511 static void DiagToggleRPCServer(float value, out float current, int rpc)
1512 {
1513 if (value != current)
1514 {
1515 current = value;
1516 SendDiagRPC(value, rpc, true);
1517 }
1518 }
1519
1520 //---------------------------------------------
1521 static void DiagToggleRPCAction(int value, ScriptCaller action, int current, int rpc)
1522 {
1523 if (value != current)
1524 {
1525 SendDiagRPC(value, rpc);
1526 action.Invoke(value);
1527 }
1528 }
1529
1530 //---------------------------------------------
1531 static void DiagToggleAction(int value, ScriptCaller action, int current)
1532 {
1533 if (value != current)
1534 {
1535 action.Invoke(value);
1536 }
1537 }
1538
1539 //---------------------------------------------
1540 static void SendDiagRPCSelf(Param value, int rpc)
1541 {
1542 PlayerBase player = GetPlayer();
1543 if (player)
1544 {
1545 g_Game.RPCSelfSingleParam(player, rpc, value);
1546 }
1547 }
1548
1549 //---------------------------------------------
1550 static void SendDiagRPCSelfBasic(SendDiagRPCSelfBasicParam param)
1551 {
1552 SendDiagRPCSelf(null, param.param1);
1553 }
1554
1555 //---------------------------------------------
1556 static void SendDiagRPCSelfParam(SendDiagRPCSelfParamParam param)
1557 {
1558 SendDiagRPCSelf(param.param2, param.param1);
1559 }
1560
1561 //---------------------------------------------
1562 static void SendDiagRPC(Param value, int rpc, bool serverOnly = false)
1563 {
1564 PlayerBase player = GetPlayer();
1565 if (player)
1566 {
1567 PlayerIdentity playerIdentity = player.GetIdentity();
1568 if (g_Game.IsMultiplayer() && playerIdentity)
1569 {
1570 g_Game.RPCSingleParam(player, rpc, value, true, playerIdentity);
1571 }
1572
1573 if (!g_Game.IsMultiplayer() || !serverOnly)
1574 {
1575 g_Game.RPCSelfSingleParam(player, rpc, value);
1576 }
1577 }
1578 }
1579
1580 //---------------------------------------------
1581 static void SendDiagRPCBasic(SendDiagRPCBasicParam param)
1582 {
1583 SendDiagRPC(null, param.param1, param.param2);
1584 }
1585
1586 //---------------------------------------------
1587 static void SendDiagRPCParam(SendDiagRPCParamParam param)
1588 {
1589 SendDiagRPC(param.param3, param.param1, param.param2);
1590 }
1591
1592 //---------------------------------------------
1593 static void SendDiagRPC(int rpc, bool serverOnly = false)
1594 {
1595 SendDiagRPC(null, rpc, serverOnly);
1596 }
1597
1598 //---------------------------------------------
1599 static void SendDiagRPC(bool value, int rpc, bool serverOnly = false)
1600 {
1601 CachedObjectsParams.PARAM1_BOOL.param1 = value;
1602 SendDiagRPC(CachedObjectsParams.PARAM1_BOOL, rpc, serverOnly);
1603 }
1604
1605 //---------------------------------------------
1606 static void SendDiagRPC(int value, int rpc, bool serverOnly = false)
1607 {
1608 CachedObjectsParams.PARAM1_INT.param1 = value;
1609 SendDiagRPC(CachedObjectsParams.PARAM1_INT, rpc, serverOnly);
1610 }
1611
1612 //---------------------------------------------
1613 static void SendDiagRPC(float value, int rpc, bool serverOnly = false)
1614 {
1615 CachedObjectsParams.PARAM1_FLOAT.param1 = value;
1616 SendDiagRPC(CachedObjectsParams.PARAM1_FLOAT, rpc, serverOnly);
1617 }
1618
1619 //---------------------------------------------
1620 static void CBUpdateSBDummyServers()
1621 {
1622 m_SBDiagScriptInvoker.Invoke();
1623 }
1624
1625 static ScriptInvoker GetSBDummyServersInvoker()
1626 {
1627 return m_SBDiagScriptInvoker;
1628 }
1629#endif
1630}
enum EScriptInvokerInsertFlags ScriptCaller()
Designed to hold 1 valid call.
Param3 int
void UiHintPanel(Widget parent_widget)
ref map< string, ref BleedingSourceZone > m_BleedingSourceZone
static ref Param2< int, int > PARAM2_INT_INT
static ref Param1< bool > PARAM1_BOOL
static ref Param1< float > PARAM1_FLOAT
static ref Param2< float, float > PARAM2_FLOAT_FLOAT
static ref Param1< int > PARAM1_INT
static bool GetHitIndicationPPEEnabled()
static bool IsPointInPlayerRestrictedArea(vector point, out PlayerRestrictedAreaInstance hitArea)
Super root of all classes in Enforce script.
Definition enscript.c:11
static proto bool RayCastBullet(vector begPos, vector endPos, PhxInteractionLayers layerMask, Object ignoreObj, out Object hitObject, out vector hitPosition, out vector hitNormal, out float hitFraction)
at which point does the stabilization start to get affected
Definition dbgui.c:60
static void CheckValues()
range 0..180, randomized offset of direction to make it less acurate
static float m_DistanceAdjust
range 0..1, a point where the fading starts
proto native Transport GetTransport()
proto native int GetVehicleSeat()
static bool IsInventoryHFSMLogEnable()
Definition debug.c:766
static bool IsInventoryMoveLogEnable()
Definition debug.c:746
static bool IsWeaponLogEnable()
Definition debug.c:816
static bool IsActionLogEnable()
Definition debug.c:736
static bool IsInventoryReservationLogEnable()
Definition debug.c:756
static bool IsQuickbarLogEnable()
Definition debug.c:786
static bool IsSyncLogEnable()
Definition debug.c:776
static bool IsSymptomLogEnable()
Definition debug.c:806
static bool IsBaseBuildingLogEnable()
Definition debug.c:796
static bool IsBleedingChancesLogEnable()
Definition debug.c:831
proto void SetParamByIndex(int paramIndex, void value)
set parametr of material by index
Definition enmath.c:7
Mission class.
Definition gameplay.c:686
Base Param Class with no parameters.
Definition param.c:12
The class that will be instanced (moddable).
Definition gameplay.c:389
void OnInit()
void OnRPC(PlayerBase player, int rpc_type, ParamsReadContext ctx)
void PluginSceneManager()
static bool m_GunParticlesState
Definition gameplay.c:1538
EntityAI GetObject()
Definition sceneobject.c:59
ScriptInvoker Class provide list of callbacks usage:
Definition tools.c:116
proto bool Read(void value_in)
void CreateDebugWindow(bool create)
override Shape DebugFreeAreaAtDoor(int currentSeat, float maxAllowedObjHeight=0.5, float horizontalExtents=0.5, float playerHeight=1.7)
Definition car.c:140
DayZGame g_Game
Definition dayzgame.c:3942
PhxInteractionLayers
Definition dayzphysics.c:2
class DayZPlayerCameraResult DayZPlayerCamera(DayZPlayer pPlayer, HumanInputController pInput)
Definition dayzplayer.c:56
void DayZPlayerImplementFallDamage(DayZPlayer pPlayer)
Mission mission
DiagMenuIDs
Definition ediagmenuids.c:2
void Environment(PlayerBase pPlayer)
ERPCs
Definition erpcs.c:2
Serializer ParamsReadContext
Definition gameplay.c:15
proto void Print(void var)
Prints content of variable to console/log.
static proto native void Spacer(int height)
static proto native void Begin(string windowTitle, float x=0, float y=0)
static proto void InputFloat(string txt, out float value, int pxWidth=150)
static proto native void Text(string label)
static proto native void End()
static proto native void SameLine()
static proto bool GetBool(int id, bool reverse=false)
Get value as bool from the given script id.
static proto void SetValue(int id, int value)
Set value at the given script id.
class DiagMenu Shape
Instance of created debug visualizer.
static proto bool BindCallback(int id, func callback)
Bind a callback to the given id.
static proto int GetValue(int id)
Get value as int from the given script id.
static proto float GetRangeValue(int id)
Get range value at the given script id.
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
static proto float WrapFloat(float f, float min, float max)
Returns wrap number to specified interval [min, max[.
proto native void OnUpdate()
Definition tools.c:349
PlayerBase GetPlayer()
DebugActionType
PluginBase GetPlugin(typename plugin_type)