DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
PluginDiagMenuClient.c
См. документацию.
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#endif
26
27 static ref ScriptInvoker m_SBDiagScriptInvoker = new ScriptInvoker();
28
29 override void OnInit()
30 {
31 super.OnInit();
32
33 BindCallbacks();
34 }
35
36 protected void BindCallbacks()
37 {
38 //---------------------------------------------------------------
39 // LEVEL 2 - Script > Inventory
40 //---------------------------------------------------------------
41 DiagMenu.BindCallback(DiagMenuIDs.INVENTORY_USE_ACK_MOVE_HANDS, CBInventoryHandsAckMove);
42 DiagMenu.BindCallback(DiagMenuIDs.INVENTORY_ENABLE_DESYNC_REPAIR, CBEnableDesyncRepair);
43
44 //---------------------------------------------------------------
45 // LEVEL 2 - Script > Crafting
46 //---------------------------------------------------------------
47 DiagMenu.BindCallback(DiagMenuIDs.CRAFTING_GENERATE, CBCraftingGenerate);
48 DiagMenu.BindCallback(DiagMenuIDs.CRAFTING_INSTANT, CBCraftingInstant);
49 DiagMenu.BindCallback(DiagMenuIDs.CRAFTING_DUMP, CBCraftingDump);
50
51 //---------------------------------------------------------------
52 // LEVEL 2 - Script > Vehicles
53 //---------------------------------------------------------------
54 DiagMenu.BindCallback(DiagMenuIDs.VEHICLE_DEBUG_OUTPUT, CBVehicleDebugOutput);
55 DiagMenu.BindCallback(DiagMenuIDs.VEHICLE_DUMP_CRASH_DATA, CBDumpCrashData);
56
57 //---------------------------------------------------------------
58 // LEVEL 2 - Script > Cheats
59 //---------------------------------------------------------------
60 DiagMenu.BindCallback(DiagMenuIDs.CHEATS_MODIFIERS, CBCheatsModifiers);
61 DiagMenu.BindCallback(DiagMenuIDs.CHEATS_KILL_PLAYER, CBCheatsKillPlayer);
62 DiagMenu.BindCallback(DiagMenuIDs.CHEATS_INVINCIBILITY, CBCheatsInvincibility);
63 DiagMenu.BindCallback(DiagMenuIDs.CHEATS_DISABLE_STAMINA, CBCheatsStaminaDisable);
64 DiagMenu.BindCallback(DiagMenuIDs.CHEATS_RESET_PLAYER, CBCheatsResetPlayer);
65 DiagMenu.BindCallback(DiagMenuIDs.CHEATS_RESET_PLAYER_MAX, CBCheatsResetPlayerMax);
66 DiagMenu.BindCallback(DiagMenuIDs.CHEATS_INVENTORY_ACCESS, CBCheatsInventoryAccess);
67 DiagMenu.BindCallback(DiagMenuIDs.CHEATS_FIX_ITEMS, CBCheatsFixItems);
68 DiagMenu.BindCallback(DiagMenuIDs.CHEATS_CREATE_HIT, CBCreateHit);
69 DiagMenu.BindCallback(DiagMenuIDs.CHEATS_CREATE_HIT_LIGHT, CBCreateHitLight);
70 DiagMenu.BindCallback(DiagMenuIDs.CHEATS_CLIENT_DESYNC_INVENTORY, CBClientDesync);
71 DiagMenu.BindCallback(DiagMenuIDs.CHEATS_OLD_PROCESSINPUTDATA, CBOldProcessInputData);
72
73 //---------------------------------------------------------------
74 // LEVEL 2 - Script > Player Agents
75 //---------------------------------------------------------------
76 DiagMenu.BindCallback(DiagMenuIDs.PLAYER_AGENTS_INJECTS_SHOW, CBPlayerAgentsInjectActions);
77
78 //---------------------------------------------------------------
79 // LEVEL 2 - Script > Soft Skills
80 //---------------------------------------------------------------
81 DiagMenu.BindCallback(DiagMenuIDs.SOFT_SKILLS_SHOW_DEBUG, CBSoftSkillsShowDebug);
82 DiagMenu.BindCallback(DiagMenuIDs.SOFT_SKILLS_TOGGLE_STATE, CBSoftSkillsToggleState);
83 DiagMenu.BindCallback(DiagMenuIDs.SOFT_SKILLS_TOGGLE_MODEL, CBSoftSkillsToggleModel);
84 DiagMenu.BindCallback(DiagMenuIDs.SOFT_SKILLS_SPECIALTY_VALUE, CBSoftSkillsSpecialtyValue);
85
86 //---------------------------------------------------------------
87 // LEVEL 2 - Script > Lifespan
88 //---------------------------------------------------------------
89 DiagMenu.BindCallback(DiagMenuIDs.LIFESPAN_BLOODY_HANDS, CBLifespanBloodyHands);
90 DiagMenu.BindCallback(DiagMenuIDs.LIFESPAN_PLAYTIME_UPDATE, CBLifespanPlaytimeUpdate);
91
92 //---------------------------------------------------------------
93 // LEVEL 2 - Script > Misc
94 //---------------------------------------------------------------
95 DiagMenu.BindCallback(DiagMenuIDs.MISC_DISABLE_PERSONAL_LIGHT, CBMiscPersonalLight);
96 DiagMenu.BindCallback(DiagMenuIDs.MISC_ITEM_DEBUG_ACTIONS, CBMiscItemDebugActions); // Is enabled by default now
97 DiagMenu.BindCallback(DiagMenuIDs.MISC_LOG_PLAYER_STATS, CBMiscLogPlayerStats);
98 DiagMenu.BindCallback(DiagMenuIDs.MISC_FORCE_HINT_INDEX, CBMiscForceHintIndex);
99
100 //---------------------------------------------------------------
101 // LEVEL 2 - Script > Misc -> Environment
102 //---------------------------------------------------------------
103 DiagMenu.BindCallback(DiagMenuIDs.MISC_ENVIRONMENT_DEBUG, CBMiscEnvironmentDebug);
104 #ifdef ENABLE_LOGGING
105 DiagMenu.BindCallback(DiagMenuIDs.MISC_ENVIRONMENT_LOGGING_DRYWET, CBMiscEnvironmentLoggingDryWet);
106 DiagMenu.BindCallback(DiagMenuIDs.MISC_ENVIRONMENT_LOGGING_ITEMHEAT, CBMiscEnvironmentLoggingItemHeat);
107 #endif
108
109 //---------------------------------------------------------------
110 // LEVEL 2 - Script > Misc
111 //---------------------------------------------------------------
112 DiagMenu.BindCallback(DiagMenuIDs.MISC_PERMANENT_CROSSHAIR, CBMiscPermanentCrossHair);
113 DiagMenu.BindCallback(DiagMenuIDs.MISC_TOGGLE_HUD, CBMiscToggleHud);
114 DiagMenu.BindCallback(DiagMenuIDs.MISC_FALLDAMAGE_DEBUG, CBMiscFallDamageDebug);
115 DiagMenu.BindCallback(DiagMenuIDs.MISC_DISPLAY_PLAYER_INFO, CBMiscDisplayPlayerInfo);
116 DiagMenu.BindCallback(DiagMenuIDs.MISC_UNIVERSAL_TEMPERATURE_SOURCES, CBMiscUniversalTemperatureSources);
117 DiagMenu.BindCallback(DiagMenuIDs.MISC_BULLET_IMPACT, CBMiscBulletImpact);
118 DiagMenu.BindCallback(DiagMenuIDs.MISC_GO_UNCONSCIOUS, CBMiscGoUnconscious);
119 DiagMenu.BindCallback(DiagMenuIDs.MISC_GO_UNCONSCIOUS_DELAYED, CBMiscGoUnconsciousDelayed);
120 DiagMenu.BindCallback(DiagMenuIDs.MISC_QUICK_RESTRAIN, CBMiscQuickRestrain);
121
122 //---------------------------------------------------------------
123 // LEVEL 3 - Script > Misc > Hair Hiding
124 //---------------------------------------------------------------
125 DiagMenu.BindCallback(DiagMenuIDs.MISC_HAIR_LEVEL_HIDE, CBMiscHairHide);
126 DiagMenu.BindCallback(DiagMenuIDs.MISC_HAIR_HIDE_ALL, CBMiscHairHideAll);
127
128 //---------------------------------------------------------------
129 // LEVEL 2 - Script > Misc
130 //---------------------------------------------------------------
131 DiagMenu.BindCallback(DiagMenuIDs.MISC_CAM_SHAKE, CBMiscCamShake);
132 DiagMenu.BindCallback(DiagMenuIDs.MISC_QUICK_FISHING, CBMiscQuickFishing);
133 DiagMenu.BindCallback(DiagMenuIDs.MISC_SHOCK_IMPACT, CBMiscShockImpact);
134 DiagMenu.BindCallback(DiagMenuIDs.MISC_SHOW_PLUG_ARROWS, CBMiscPlugArrows);
135 DiagMenu.BindCallback(DiagMenuIDs.MISC_TARGETABLE_BY_AI, CBMiscTargetableByAI);
136
137 //---------------------------------------------------------------
138 // LEVEL 3 - Script > Misc > Hit Indication
139 //---------------------------------------------------------------
140 DiagMenu.BindCallback(DiagMenuIDs.MISC_HIT_INDICATION_DEBUG, CBMiscHitIndication);
141 DiagMenu.BindCallback(DiagMenuIDs.MISC_HIT_INDICATION_SPAWN_HIT, CBMiscHitIndicationSpawnHit);
142 DiagMenu.BindCallback(DiagMenuIDs.MISC_HIT_INDICATION_MODE, CBMiscHitIndication);
143 DiagMenu.BindCallback(DiagMenuIDs.MISC_HIT_INDICATION_TYPE, CBMiscHitIndication);
144 DiagMenu.BindCallback(DiagMenuIDs.MISC_HIT_INDICATION_DURATION, CBMiscHitIndication);
145 DiagMenu.BindCallback(DiagMenuIDs.MISC_HIT_INDICATION_BREAKPOINT, CBMiscHitIndication);
146 DiagMenu.BindCallback(DiagMenuIDs.MISC_HIT_INDICATION_DISTANCE, CBMiscHitIndication);
147 DiagMenu.BindCallback(DiagMenuIDs.MISC_HIT_INDICATION_ROTATION, CBMiscHitIndication);
148 DiagMenu.BindCallback(DiagMenuIDs.MISC_HIT_INDICATION_SCATTER, CBMiscHitIndication);
149 DiagMenu.BindCallback(DiagMenuIDs.MISC_HIT_INDICATION_DISABLE_PPE, CBMiscHitIndication);
150
151 //---------------------------------------------------------------
152 // LEVEL 2 - Script > Misc
153 //---------------------------------------------------------------
154 DiagMenu.BindCallback(DiagMenuIDs.MISC_FREEZE_ENTITY, CBMiscFreezeEntity);
155 DiagMenu.BindCallback(DiagMenuIDs.MISC_FREEZE_PLAYER, CBMiscFreezePlayer);
156 DiagMenu.BindCallback(DiagMenuIDs.MISC_DEBUG_MONITOR, CBDebugMonitor);
157 DiagMenu.BindCallback(DiagMenuIDs.MISC_SHOW_PRA_ALL, CBPRADrawAll);
158 DiagMenu.BindCallback(DiagMenuIDs.MISC_PRA_DETECT, CBPRADetect);
159
160 //---------------------------------------------------------------
161 // LEVEL 3 - Script > Misc > Dust Effects
162 //---------------------------------------------------------------
163 DiagMenu.BindCallback(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_ENABLE, CBDEGroundEnable);
164 DiagMenu.BindCallback(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_THRESHOLD, CBDEGroundThreshold);
165 DiagMenu.BindCallback(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_INTESITY, CBDEGroundIntensity);
166 DiagMenu.BindCallback(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_RADIUS, CBDEGroundRadius);
167 DiagMenu.BindCallback(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_WINDWEIGHT, CBDEWindWeight);
168 DiagMenu.BindCallback(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_GETFROMSURFACE, CBDEGroundFromSurfaceEnable);
169 DiagMenu.BindCallback(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_LIFETIME_MIN, CBDEGroundLifetimeRange);
170 DiagMenu.BindCallback(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_LIFETIME_MAX, CBDEGroundLifetimeRange);
171 DiagMenu.BindCallback(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_SIZE_MIN, CBDEGroundSizeRange);
172 DiagMenu.BindCallback(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_SIZE_MAX, CBDEGroundSizeRange);
173
174 DiagMenu.BindCallback(DiagMenuIDs.MISC_DUST_EFFECTS_CLOUD_ENABLE, CBDECloudEnable);
175 DiagMenu.BindCallback(DiagMenuIDs.MISC_DUST_EFFECTS_CLOUD_THRESHOLD, CBDECloudThreshold);
176 DiagMenu.BindCallback(DiagMenuIDs.MISC_DUST_EFFECTS_CLOUD_COOLDOWN, CBDECloudCooldown);
177 DiagMenu.BindCallback(DiagMenuIDs.MISC_DUST_EFFECTS_CLOUD_DURATION, CBDECloudDuration);
178 DiagMenu.BindCallback(DiagMenuIDs.MISC_DUST_EFFECTS_CLOUD_DISTANCE, CBDECloudDistance);
179 DiagMenu.BindCallback(DiagMenuIDs.MISC_DUST_EFFECTS_CLOUD_GETFROMSURFACE, CBDECloudFromSurfaceEnable);
180
181 //---------------------------------------------------------------
182 // LEVEL 2 - Script > Simulate script
183 //---------------------------------------------------------------
184 DiagMenu.BindCallback(DiagMenuIDs.SIMULATE_INFINITE_LOOP, CBSimulateInfiniteLoop);
185 DiagMenu.BindCallback(DiagMenuIDs.SIMULATE_NULL_POINTER, CBSimulateNullPointer);
186 DiagMenu.BindCallback(DiagMenuIDs.SIMULATE_DIVISION_BY_ZERO, CBSimulateDivisionByZero);
187 DiagMenu.BindCallback(DiagMenuIDs.SIMULATE_ERROR_FUNCTION, CBSimulateErrorFunction);
188
189 //---------------------------------------------------------------
190 // LEVEL 2 - Script > Weapon
191 //---------------------------------------------------------------
192 DiagMenu.BindCallback(DiagMenuIDs.WEAPON_PARTICLES, CBWeaponParticles);
193 DiagMenu.BindCallback(DiagMenuIDs.WEAPON_DEBUG, CBWeaponDebug);
194 DiagMenu.BindCallback(DiagMenuIDs.WEAPON_AIM_NOISE, CBWeaponAimNoise);
195 DiagMenu.BindCallback(DiagMenuIDs.WEAPON_RECOIL, CBWeaponRecoil);
196 DiagMenu.BindCallback(DiagMenuIDs.WEAPON_UNLIMITED_AMMO, CBWeaponUnlimitedAmmo);
197 DiagMenu.BindCallback(DiagMenuIDs.WEAPON_BURST_VERSION, CBWeaponBurstVersion);
198
199 //---------------------------------------------------------------
200 // LEVEL 2 - Script > Bleeding
201 //---------------------------------------------------------------
202 DiagMenu.BindCallback(DiagMenuIDs.BLEEDING_SOURCES, CBBleedingSources);
203 DiagMenu.BindCallback(DiagMenuIDs.BLEEDING_DISABLE_BLOOD_LOSS, CBBleedingDisableBloodLoss);
204 DiagMenu.BindCallback(DiagMenuIDs.BLEEDING_ACTIVATE_SOURCE, CBBleedingActivateSource);
205 DiagMenu.BindCallback(DiagMenuIDs.BLEEDING_ACTIVATE_ALL_SOURCES, CBBleedingActivateAllSources);
206 DiagMenu.BindCallback(DiagMenuIDs.BLEEDING_ACTIVATE_SOURCE_LEVEL, CBBleedingActivateSourceLevel);
207 DiagMenu.BindCallback(DiagMenuIDs.BLEEDING_RELOAD, CBBleedingReload);
208
209 //---------------------------------------------------------------
210 // LEVEL 3 - Script > Bleeding > Bleeding Indication
211 //---------------------------------------------------------------
212 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS, CBBBleedingIndicators);
213 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_USEVALUEOVERRIDES, CBBBleedingIndicators);
214 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_RANDOMROTATION, CBBBleedingIndicators);
215 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_SEQUENCE_DURATION, CBBBleedingIndicators);
216 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_BASEDURATION, CBBBleedingIndicators);
217 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_MINDELAY, CBBBleedingIndicators);
218 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_MAXDELAY, CBBBleedingIndicators);
219 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_PROGRESSTHRESHOLD, CBBBleedingIndicators);
220 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_STARTSIZE, CBBBleedingIndicators);
221 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_ENDSIZE, CBBBleedingIndicators);
222 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_RNDSCALEMIN, CBBBleedingIndicators);
223 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_RNDSCALEMAX, CBBBleedingIndicators);
224 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_SCATTER, CBBBleedingIndicators);
225 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_SLIDEDISTANCE, CBBBleedingIndicators);
226
227 //---------------------------------------------------------------
228 // LEVEL 4 - Script > Bleeding > Bleeding Indication > Color Debug
229 //---------------------------------------------------------------
230 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_ENABLEDESATURATION, CBBBleedingIndicators);
231 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_DESATURATIONEND, CBBBleedingIndicators);
232 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_R, CBBBleedingIndicators);
233 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_G, CBBBleedingIndicators);
234 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_B, CBBBleedingIndicators);
235 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_A_START, CBBBleedingIndicators);
236 DiagMenu.BindCallback(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_A_END, CBBBleedingIndicators);
237
238 //---------------------------------------------------------------
239 // LEVEL 2 - Script > Logs
240 //---------------------------------------------------------------
241 DiagMenu.BindCallback(DiagMenuIDs.LOGS_ACTIONS, CBLogsActions);
242 DiagMenu.BindCallback(DiagMenuIDs.LOGS_WEAPONS, CBLogsWeapons);
243 DiagMenu.BindCallback(DiagMenuIDs.LOGS_SYNC, CBLogsSync);
244 DiagMenu.BindCallback(DiagMenuIDs.LOGS_BASEBUILDING, CBLogsBaseBuilding);
245 DiagMenu.BindCallback(DiagMenuIDs.LOGS_SYMPTOMS, CBLogsSymptoms);
246 DiagMenu.BindCallback(DiagMenuIDs.LOGS_BLEEDING_CHANCES, CBLogsBleedingChances);
247 DiagMenu.BindCallback(DiagMenuIDs.LOGS_QUICKBAR, CBLogsQuickbar);
248
249 //---------------------------------------------------------------
250 // LEVEL 3 - Script > Logs > InventoryLogs
251 //---------------------------------------------------------------
252 DiagMenu.BindCallback(DiagMenuIDs.LOGS_INVENTORY_MOVE, CBLogsInventoryMove);
253 DiagMenu.BindCallback(DiagMenuIDs.LOGS_INVENTORY_RESERVATION, CBLogsInventoryReservation);
254 DiagMenu.BindCallback(DiagMenuIDs.LOGS_INVENTORY_HFSM, CBLogsInventoryHFSM);
255
256 //---------------------------------------------------------------
257 // LEVEL 2 - Script > Triggers
258 //---------------------------------------------------------------
259 DiagMenu.BindCallback(DiagMenuIDs.TRIGGER_DEBUG, CBTriggerDebug);
260
261 //---------------------------------------------------------------
262 // LEVEL 2 - Script > Base Building
263 //---------------------------------------------------------------
264 DiagMenu.BindCallback(DiagMenuIDs.BASEBUILDING_WOOD, CBBaseBuildingWood);
265 DiagMenu.BindCallback(DiagMenuIDs.BASEBUILDING_GATE, CBBaseBuildingGate);
266 DiagMenu.BindCallback(DiagMenuIDs.BASEBUILDING_FASTBUILD, CBBaseBuildingFast);
267 DiagMenu.BindCallback(DiagMenuIDs.BASEBUILDING_FULLDEBUG, CBBaseBuildingDebug);
268 DiagMenu.BindCallback(DiagMenuIDs.BASEBUILDING_COLLISIONDEBUG, CBBaseBuildingCollisionDebug);
269
270 //---------------------------------------------------------------
271 // LEVEL 2 - Script > Finishers
272 //---------------------------------------------------------------
273 DiagMenu.BindCallback(DiagMenuIDs.FINISHERS_FINISHER_FORCED, CBFinishersFinisherForced);
274
275 //---------------------------------------------------------------
276 // LEVEL 2 - Script > Cinematic Camera Tools
277 //---------------------------------------------------------------
278 DiagMenu.BindCallback(DiagMenuIDs.CAMERATOOLS_ENABLE_REMOTE_CAMERA, CBCameraToolsEnableRemoteCamera);
279
280 //---------------------------------------------------------------
281 // LEVEL 2 - Script > Geyser Diag
282 //---------------------------------------------------------------
283 DiagMenu.BindCallback(DiagMenuIDs.GEYSERDIAG_ENABLE, CBSetGeyserDiagData);
284 DiagMenu.BindCallback(DiagMenuIDs.GEYSERDIAG_STATE_INTERVAL, CBSetGeyserDiagData);
285 DiagMenu.BindCallback(DiagMenuIDs.GEYSERDIAG_STATE_DURATION, CBSetGeyserDiagData);
286
287 //---------------------------------------------------------------
288 // LEVEL 2 - Script > Radio Gameplaz
289 //---------------------------------------------------------------
290 DiagMenu.BindCallback(DiagMenuIDs.RADIOGAMEPLAY_LOGGING, CBSetRadioGameplayLogging);
291
292 #ifdef ROBOCLIENT
293 //---------------------------------------------------------------
294 // LEVEL 2 - Script > Roboclients
295 //---------------------------------------------------------------
296 DiagMenu.BindCallback(DiagMenuIDs.ROBOCLIENTS_ACTIVE, CBRoboclientActive);
297 DiagMenu.BindCallback(DiagMenuIDs.ROBOCLIENTS_RESTART, CBRoboclientRestart);
298 #endif
299 //---------------------------------------------------------------
300 // LEVEL 2 - Script > Server Browser
301 //---------------------------------------------------------------
302 DiagMenu.BindCallback(DiagMenuIDs.SERVER_BROWSER_DUMMY_SERVERS, CBUpdateSBDummyServers);
303 }
304
305 //---------------------------------------------
306 override void OnRPC(PlayerBase player, int rpc_type, ParamsReadContext ctx)
307 {
308 super.OnRPC(player, rpc_type, ctx);
309
310 switch (rpc_type)
311 {
312 case ERPCs.DIAG_MISC_ENVIRONMENT_DEBUG_DATA:
313 {
314 if (!m_EnvDebugData)
315 m_EnvDebugData = new EnvDebugData();
316
317 ctx.Read(m_EnvDebugData);
318 break;
319 }
320
321 case ERPCs.DIAG_MISC_FALLDAMAGE_DEBUG_DATA:
322 {
323 if (!m_FallDamageDebugData)
324 m_FallDamageDebugData = new FallDamageDebugData();
325
326 ctx.Read(m_FallDamageDebugData);
327 break;
328 }
329
330 case ERPCs.DIAG_VEHICLES_DUMP_CRASH_DATA_CONTENTS:
331 {
332 Param1<array<ref CrashDebugData>> par = new Param1<array<ref CrashDebugData>>(null);
333
334 if (ctx.Read(par))
335 CrashDebugData.DumpDataArray(par.param1);
336 break;
337 }
338 }
339 }
340
341 //---------------------------------------------
342 override void OnUpdate(float delta_time)
343 {
344 super.OnUpdate(delta_time);
345
346 //---------------------------------------------
347 // every system can handle their own actions locally(within the system itself),
348 // this section is for systems which don't have client side representation,
349 // or don't have their own tick, or for whatever other reason you prefer to put the logic here
350 // PUT ONLY METHOD CALLS HERE, NO CODE !!
351 // PUT ONLY METHOD CALLS HERE, NO CODE !!
352 //---------------------------------------------
353
354 UpdateMiscVehicleGetOutBox();
355 UpdateEnvironmentDebug();
356 CheckTimeAccel();
357 UpdateMaterialDebug();
358 UpdateWeaponLiftDiag(delta_time);
359 UpdateBaseBuildingFullDebug();
360 UpdateCharacterStepSurfaceDebug();
361 }
362
363 //---------------------------------------------
364 void CheckTimeAccel()
365 {
366 if (!FeatureTimeAccel.m_CurrentTimeAccel)
367 {
368 InitTimeAccel();
369 }
370
371 if (g_Game && g_Game.GetPlayer())
372 {
373 TimeAccelParam param = GetTimeAccelMenuState();
374
375 if (!FeatureTimeAccel.AreTimeAccelParamsSame(param, FeatureTimeAccel.m_CurrentTimeAccel))
376 {
377 int timeAccelBig = param.param2;
378 float timeAccelSmall = param.param2 - timeAccelBig;
379 FeatureTimeAccel.CopyTimeAccelClipboard(param.param1, timeAccelBig, timeAccelSmall, param.param3 );
380 FeatureTimeAccel.SendTimeAccel(g_Game.GetPlayer(), param);
381 FeatureTimeAccel.m_CurrentTimeAccel = param;
382 }
383 }
384
385 }
386
387 static void CBInventoryHandsAckMove(bool enable, int id)
388 {
389 PluginInventoryDebug pluginInventoryDebug = PluginInventoryDebug.Cast(GetPlugin(PluginInventoryDebug));
390 DiagToggleRPCServer(enable, pluginInventoryDebug.m_IsHandAckEnable, ERPCs.DIAG_INVENTORY_ACK_HANDS);
391 }
392
393 static void CBEnableDesyncRepair(bool enable, int id)
394 {
395 PluginInventoryDebug pluginInventoryDebug = PluginInventoryDebug.Cast(GetPlugin(PluginInventoryDebug));
396 DiagToggleRPCServer(enable, pluginInventoryDebug.m_IsDesyncRepairEnable, ERPCs.DIAG_INVENTORY_REPAIR_DESYNC);
397 }
398
399 static void CBClientDesync(bool enable, int id)
400 {
401 PluginInventoryDebug pluginInventoryDebug = PluginInventoryDebug.Cast(GetPlugin(PluginInventoryDebug));
402 pluginInventoryDebug.SetLocalOnlyMoveEnable(enable);
403 }
404
405 static void CBOldProcessInputData(bool enable, int id)
406 {
407 PluginInventoryDebug pluginInventoryDebug = PluginInventoryDebug.Cast(GetPlugin(PluginInventoryDebug));
408 pluginInventoryDebug.SetOldProcessInputDataEnable(enable);
409 }
410 //---------------------------------------------
411 static void CBCraftingGenerate(bool enabled, int id)
412 {
413 PluginRecipesManager pluginRecipesManager = PluginRecipesManager.Cast(GetPlugin(PluginRecipesManager));
414 DiagButtonAction(enabled, id, ScriptCaller.Create(pluginRecipesManager.CallbackGenerateCache));
415 }
416
417 //---------------------------------------------
418 static void CBCraftingInstant(bool enabled)
419 {
420 PluginRecipesManager pluginRecipesManager = PluginRecipesManager.Cast(GetPlugin(PluginRecipesManager));
421 DiagToggleRPC(enabled, pluginRecipesManager.IsEnableDebugCrafting(), ERPCs.DIAG_CRAFTING_INSTANT);
422 }
423
424 //---------------------------------------------
425 static void CBCraftingDump(bool enabled, int id)
426 {
427 PluginRecipesManager pluginRecipesManager = PluginRecipesManager.Cast(GetPlugin(PluginRecipesManager));
428 DiagButtonAction(enabled, id, ScriptCaller.Create(pluginRecipesManager.GenerateHumanReadableRecipeList));
429 }
430
431 //---------------------------------------------
432 static void CBCheatsModifiers(bool enabled)
433 {
435 DiagToggleRPCServer(enabled, pluginDiag.m_ModifiersEnabled, ERPCs.DIAG_CHEATS_MODIFIERS);
436 }
437
438 //---------------------------------------------
439 static void CBCheatsKillPlayer(bool enabled, int id)
440 {
441 DiagButtonRPC(enabled, id, ERPCs.DIAG_CHEATS_KILL_PLAYER, true);
442 }
443
444 //---------------------------------------------
445 static void CBCheatsInvincibility(int value)
446 {
448 DiagToggleRPCServer(value, pluginDiag.m_IsInvincible, ERPCs.DIAG_CHEATS_INVINCIBILITY);
449 }
450
451 //---------------------------------------------
452 static void CBCheatsStaminaDisable(bool enabled)
453 {
454 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
455 if (player)
456 player.SetStaminaDisabled(enabled);
457
459 DiagToggleRPCServer(enabled, pluginDiag.m_StaminaDisabled, ERPCs.DIAG_CHEATS_DISABLE_STAMINA);
460 }
461
462 //---------------------------------------------
463 static void CBCheatsResetPlayer(bool enabled, int id)
464 {
465 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
466 if (player)
467 player.ResetPlayer(false);
468 DiagButtonRPC(enabled, id, ERPCs.DIAG_CHEATS_RESET_PLAYER, true);
469 }
470
471 //---------------------------------------------
472 static void CBCheatsResetPlayerMax(bool enabled, int id)
473 {
474 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
475 if (player)
476 player.ResetPlayer(true);
477 DiagButtonRPC(enabled, id, ERPCs.DIAG_CHEATS_RESET_PLAYER_MAX, true);
478 }
479
480 //---------------------------------------------
481 static void CBCheatsInventoryAccess(bool enabled)
482 {
483 DiagToggleRPCServer(enabled, PlayerBase.DEBUG_INVENTORY_ACCESS, ERPCs.DIAG_CHEATS_INVENTORY_ACCESS);
484 }
485
486 //---------------------------------------------
487 static void CBCheatsFixItems(bool enabled, int id)
488 {
489 DiagButtonRPC(enabled, id, ERPCs.DIAG_CHEATS_ITEMS_FIX, true);
490 }
491
492 static void CBCreateHit(bool enabled, int id)
493 {
494 DiagButtonRPC(enabled, id, ERPCs.DIAG_CHEATS_CREATE_HIT, true);
495 }
496
497 static void CBCreateHitLight(bool enabled, int id)
498 {
499 DiagButtonRPC(enabled, id, ERPCs.DIAG_CHEATS_CREATE_HIT_LIGHT, true);
500 }
501
502 //---------------------------------------------
503 static void CBPlayerAgentsInjectActions(bool enabled)
504 {
505 DiagDebugAction(DebugActionType.PLAYER_AGENTS, enabled);
506 }
507
508 //---------------------------------------------
509 static void CBSoftSkillsShowDebug(bool enabled)
510 {
511 SoftSkillsManager ssMngr = GetPlayer().GetSoftSkillsManager();
512 DiagToggleRPCAction(enabled, ScriptCaller.Create(ssMngr.CreateDebugWindow), ssMngr.IsDebug(), ERPCs.DIAG_SOFT_SKILLS_SHOW_DEBUG);
513 }
514
515 //---------------------------------------------
516 static void CBSoftSkillsToggleState(bool enabled)
517 {
518 SoftSkillsManager ssMngr = GetPlayer().GetSoftSkillsManager();
519 DiagToggleRPC(enabled, ssMngr.GetSoftSkillsState(), ERPCs.DIAG_SOFT_SKILLS_TOGGLE_STATE);
520 }
521
522 //---------------------------------------------
523 static void CBSoftSkillsToggleModel(bool enabled)
524 {
525 SoftSkillsManager ssMngr = GetPlayer().GetSoftSkillsManager();
526 DiagToggleRPC(enabled, ssMngr.IsLinear(), ERPCs.DIAG_SOFT_SKILLS_TOGGLE_MODEL);
527 }
528
529 //---------------------------------------------
530 static void CBSoftSkillsSpecialtyValue(float value)
531 {
532 SoftSkillsManager ssMngr = GetPlayer().GetSoftSkillsManager();
533 DiagToggleRPC(value, ssMngr.GetSpecialtyLevel(), ERPCs.DIAG_SOFT_SKILLS_SPECIALTY_VALUE);
534 }
535
536 //---------------------------------------------
537 static void CBLifespanBloodyHands(bool enabled)
538 {
539 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
540 if (player)
541 {
542 bool hasBloodyHands = player.HasBloodyHands();
543 DiagToggleRPCServer(enabled, hasBloodyHands, ERPCs.DIAG_LIFESPAN_BLOODY_HANDS);
544 }
545 }
546
547 //---------------------------------------------
548 static void CBLifespanPlaytimeUpdate(float value)
549 {
551 DiagToggleRPCServer(value * 60, pluginDiag.m_Playtime, ERPCs.DIAG_LIFESPAN_PLAYTIME_UPDATE);
552 }
553
554 //---------------------------------------------
555 static void CBMiscPersonalLight(bool enabled)
556 {
557 PlayerBaseClient.m_PersonalLightDisabledByDebug = enabled;
558 PlayerBaseClient.UpdatePersonalLight();
559 }
560
561 //---------------------------------------------
562 static void CBMiscItemDebugActions(bool enabled)
563 {
564 DiagDebugAction(DebugActionType.GENERIC_ACTIONS, enabled);
565 }
566
567 //---------------------------------------------
568 static void CBMiscLogPlayerStats(bool enabled)
569 {
571 DiagToggleRPC(enabled, pluginDiag.m_LogPlayerStats, ERPCs.DIAG_MISC_LOG_PLAYER_STATS);
572 }
573
574 //---------------------------------------------
575 static void CBMiscForceHintIndex(int index)
576 {
577 UiHintPanel.m_ForcedIndex = index;
578 }
579
580 //---------------------------------------------
581 static void CBMiscPermanentCrossHair(bool enabled)
582 {
583 PluginPermanentCrossHair crosshair = PluginPermanentCrossHair.Cast(GetPlugin(PluginPermanentCrossHair));
584 crosshair.SwitchPermanentCrossHair(enabled);
585 }
586
587 //---------------------------------------------
588 void UpdateMiscVehicleGetOutBox()
589 {
590 if ( DiagMenu.GetBool(DiagMenuIDs.TRANSPORT_FREESPACE_VIS) )
591 {
592 if (m_VehicleFreeAreaBox)
593 {
594 m_VehicleFreeAreaBox.Destroy();
595 m_VehicleFreeAreaBox = null;
596 }
597
598 HumanCommandVehicle hcv = g_Game.GetPlayer().GetCommand_Vehicle();
599 if (!hcv)
600 return;
601
602 m_VehicleFreeAreaBox = hcv.GetTransport().DebugFreeAreaAtDoor( hcv.GetVehicleSeat() );
603 }
604 else if (m_VehicleFreeAreaBox)
605 {
606 m_VehicleFreeAreaBox.Destroy();
607 m_VehicleFreeAreaBox = null;
608 }
609 }
610
611 //---------------------------------------------
612 static void CBMiscToggleHud(bool enabled)
613 {
614 Mission mission = g_Game.GetMission();
615 mission.GetHud().Show(!enabled);
616 if (enabled)
617 {
618 mission.HideCrosshairVisibility();
619 }
620 else
621 {
622 mission.RefreshCrosshairVisibility();
623 }
624 }
625
626 //---------------------------------------------
627 static void CBMiscEnvironmentDebug(bool enabled)
628 {
629 SendDiagRPC(enabled, ERPCs.DIAG_MISC_ENVIRONMENT_DEBUG);
630 }
631
632 void UpdateEnvironmentDebug()
633 {
634 if (DiagMenu.GetBool(DiagMenuIDs.MISC_ENVIRONMENT_DEBUG) && m_EnvDebugData)
635 Environment.DisplayEnvDebugPlayerInfo(true, m_EnvDebugData);
636 else if (m_EnvDebugData)
637 m_EnvDebugData = null;
638 }
639
640 //---------------------------------------------
641 void UpdateMaterialDebug()
642 {
643 if (DiagMenu.GetBool(DiagMenuIDs.MATERIALDIAG_GHOSTPP))
644 {
645 MatGhostDebug();
646 }
647 }
648
649 //---------------------------------------------
650 void UpdateWeaponLiftDiag(float delta_time)
651 {
652 #ifndef SERVER
653 int weaponLiftDebug = DiagMenu.GetValue(DiagMenuIDs.WEAPON_LIFT_DEBUG);
654 if (weaponLiftDebug)
655 {
656 GetWeaponLiftDiag().DrawDiag(weaponLiftDebug, delta_time);
657 }
658 #endif
659 }
660
661 //---------------------------------------------
662 void UpdateBaseBuildingFullDebug()
663 {
664 #ifdef DIAG_DEVELOPER
665 if (DiagMenu.GetBool(DiagMenuIDs.BASEBUILDING_FULLDEBUG))
666 ConstructionDebug.Update();
667 #endif
668 }
669
670 //---------------------------------------------
671 void UpdateCharacterStepSurfaceDebug()
672 {
673 #ifdef DIAG_DEVELOPER
674 if (DiagMenu.GetBool(DiagMenuIDs.MISC_PLAYER_SURFACE_DEBUG))
675 CharacterStepsDebug.Update();
676 #endif
677 }
678
679 #ifndef SERVER
680 //---------------------------------------------
681 static WeaponLiftDiag GetWeaponLiftDiag()
682 {
684 return pluginDiag.m_WeaponLiftDiag;
685 }
686 #endif
687
688 //---------------------------------------------
689 void MatGhostDebug()
690 {
691 string materialPath = "Graphics/Materials/postprocess/ghost";
692 Material material = g_Game.GetWorld().GetMaterial(materialPath);
693 if (!material)
694 {
695 DiagMenu.SetValue(DiagMenuIDs.MATERIALDIAG_GHOSTPP, 0);
696 return;
697 }
698
699 DbgUI.Begin("GhostEffect Debug");
700 {
701 float channelWeights[] = { 0, 0, 0, 0 };
702 float noiseOffset[] = { 0, 0 };
703 float noiseScale[] = { 1, 1 };
704 float noiseLo[] = { 0, 0, 0, 0 };
705 float noiseHi[] = { 1, 1, 1, 1 };
706 float ghostOffset[] = { 0, 0 };
707 float ghostScale[] = { 1, 1 };
708 float colormod[] = { 1, 1, 1, 0.5 };
709 int spacer_height = 10;
710
711 float rw, gw, bw, aw;
712 DbgUI.Text("noise_channel_weight");
713 {
714 DbgUI.InputFloat("noise_weight_r", rw);
715 DbgUI.InputFloat("noise_weight_g", gw);
716 DbgUI.InputFloat("noise_weight_b", bw);
717 DbgUI.InputFloat("noise_weight_a", aw);
718 }
719 DbgUI.Spacer(spacer_height);
720 //-------------------//
721 float nox, noy;
722 float nsx = 1, nsy = 1;
723 DbgUI.Text("noise_offset");
724 {
725 DbgUI.InputFloat("noise_offset_x", nox);
726 DbgUI.InputFloat("noise_offset_y", noy);
727 DbgUI.InputFloat("noise_scale_x", nsx);
728 DbgUI.InputFloat("noise_scale_y", nsy);
729 }
730 DbgUI.Spacer(spacer_height);
731 //-------------------//
732 float rl = 0, rh = 1;
733 float gl = 0, gh = 1;
734 float bl = 0, bh = 1;
735 float al = 0, ah = 1;
736 DbgUI.Text("noise_remap");
737 {
738 DbgUI.InputFloat("lo_r", rl);
739 DbgUI.SameLine();
740 DbgUI.InputFloat("hi_r", rh);
741
742 DbgUI.InputFloat("lo_g", gl);
743 DbgUI.SameLine();
744 DbgUI.InputFloat("hi_g", gh);
745
746 DbgUI.InputFloat("lo_b", bl);
747 DbgUI.SameLine();
748 DbgUI.InputFloat("hi_b", bh);
749
750 DbgUI.InputFloat("lo_a", al);
751 DbgUI.SameLine();
752 DbgUI.InputFloat("hi_a", ah);
753 }
754 DbgUI.Spacer(spacer_height);
755 //-------------------//
756 float gox = 50, goy = 25;
757 float gsx = 0.85, gsy = 0.85;
758 DbgUI.Text("ghost_offset");
759 {
760 DbgUI.InputFloat("ghost_offset_x", gox);
761 DbgUI.InputFloat("ghost_offset_y", goy);
762 DbgUI.InputFloat("ghost_scale_x", gsx);
763 DbgUI.InputFloat("ghost_scale_y", gsy);
764 }
765 DbgUI.Spacer(spacer_height);
766 //-------------------//
767 float cmr = 1, cmg = 1, cmb = 1, cma = 1;
768 DbgUI.Text("color_mod");
769 {
770 DbgUI.InputFloat("color_mod_r", cmr);
771 DbgUI.InputFloat("color_mod_g", cmg);
772 DbgUI.InputFloat("color_mod_b", cmb);
773 DbgUI.InputFloat("color_curve", cma);
774 }
775 DbgUI.Spacer(spacer_height);
776 //-------------------//
777 channelWeights = { rw, gw, bw, aw };
778 noiseOffset = { nox, noy };
779 noiseScale = { nsx, nsy };
780 noiseLo = { rl, gl, bl, al };
781 noiseHi = { rh, gh, bh, ah };
782 ghostOffset = { gox, goy };
783 ghostScale = { gsx, gsy };
784 colormod = { cmr, cmg, cmb, cma };
785
786 }
787 DbgUI.End();
788
789 material.SetParamByIndex(1, channelWeights);
790 material.SetParamByIndex(2, noiseOffset[0]);
791 material.SetParamByIndex(3, noiseOffset[1]);
792 material.SetParamByIndex(4, noiseScale[0]);
793 material.SetParamByIndex(5, noiseScale[1]);
794 material.SetParamByIndex(6, noiseLo);
795 material.SetParamByIndex(7, noiseHi);
796 material.SetParamByIndex(8, ghostOffset[0]);
797 material.SetParamByIndex(9, ghostOffset[1]);
798 material.SetParamByIndex(10, ghostScale[0]);
799 material.SetParamByIndex(11, ghostScale[1]);
800 material.SetParamByIndex(12, colormod );
801
802 }
803
804 #ifdef ENABLE_LOGGING
805 static void CBMiscEnvironmentLoggingDryWet(bool enabled)
806 {
807 SendDiagRPC(enabled, ERPCs.DIAG_MISC_ENVIRONMENT_LOGGING_DRYWET);
808 }
809
810 static void CBMiscEnvironmentLoggingItemHeat(bool enabled)
811 {
812 SendDiagRPC(enabled, ERPCs.DIAG_MISC_ENVIRONMENT_LOGGING_ITEMHEAT);
813 }
814 #endif
815
816 static void CBMiscFallDamageDebug(bool enabled)
817 {
818 SendDiagRPC(enabled, ERPCs.DIAG_MISC_FALLDAMAGE_DEBUG);
819 }
820
821 void UpdateFallDamageDebug()
822 {
823 if (DiagMenu.GetBool(DiagMenuIDs.MISC_FALLDAMAGE_DEBUG) && m_FallDamageDebugData)
824 DayZPlayerImplementFallDamage.DisplayFallDamageDebugInfo(true, m_FallDamageDebugData);
825 else if (m_FallDamageDebugData)
826 m_FallDamageDebugData = null;
827 }
828
829 //---------------------------------------------
830 static void CBMiscDisplayPlayerInfo(int value)
831 {
832 PluginRemotePlayerDebugClient prpdc = PluginRemotePlayerDebugClient.Cast(GetPlugin(PluginRemotePlayerDebugClient));
833 prpdc.RequestPlayerInfo(PlayerBase.Cast(g_Game.GetPlayer()), value);
834 }
835
836 //---------------------------------------------
837 static void CBMiscUniversalTemperatureSources(bool enabled)
838 {
840 client.RequestUniversalTemperatureSources(PlayerBase.Cast(g_Game.GetPlayer()), enabled);
841 }
842
843 //---------------------------------------------
844 static void CBMiscBulletImpact(bool enabled, int id)
845 {
846 PlayerBase player = GetPlayer();
849 DiagButtonActionParams(enabled, id, ScriptCaller.Create(player.SpawnDamageDealtEffect2), CachedObjectsParams.PARAM2_FLOAT_FLOAT);
850 }
851
852 //---------------------------------------------
853 static void CBMiscGoUnconscious(bool enabled, int id)
854 {
855 DiagButtonRPC(enabled, id, ERPCs.DIAG_MISC_GO_UNCONSCIOUS, true);
856 }
857
858 //---------------------------------------------
859 static void CBMiscGoUnconsciousDelayed(bool enabled, int id)
860 {
861 DiagButtonRPC(enabled, id, ERPCs.DIAG_MISC_GO_UNCONSCIOUS_DELAYED, true);
862 }
863
864 //---------------------------------------------
865 static void CBMiscQuickRestrain(bool enabled)
866 {
867 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
868 DiagToggleRPC(enabled, player.IsQuickRestrain(), ERPCs.DIAG_MISC_QUICK_RESTRAIN);
869 }
870
871 //---------------------------------------------
872 static void CBMiscHairHide(bool enabled, int id)
873 {
874 int value = DiagMenu.GetRangeValue(DiagMenuIDs.MISC_HAIR_LEVEL);
875 DiagButtonRPCIntInt(enabled, id, value, enabled, ERPCs.DIAG_MISC_HAIR_LEVEL_HIDE, true);
876 }
877
878 //---------------------------------------------
879 static void CBMiscHairHideAll(bool enabled)
880 {
882 CachedObjectsParams.PARAM2_INT_INT.param2 = enabled;
883
884 SendDiagRPC(CachedObjectsParams.PARAM2_INT_INT, ERPCs.DIAG_MISC_HAIR_LEVEL_HIDE, true);
885 }
886
887 //---------------------------------------------
888 static void CBMiscCamShake(bool enabled, int id)
889 {
890 DayZPlayerCamera cam = g_Game.GetPlayer().GetCurrentCamera();
891 DiagButtonAction(enabled, id, ScriptCaller.Create(cam.SpawnDiagCameraShake));
892 }
893
894 //---------------------------------------------
895 static void CBMiscQuickFishing(bool enabled)
896 {
897 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
898 DiagToggleRPC(enabled, player.IsQuickFishing(), ERPCs.DIAG_MISC_QUICK_FISHING);
899 }
900
901 //---------------------------------------------
902 static void CBMiscShockImpact(bool enabled, int id)
903 {
904 DiagButtonAction(enabled, id, ScriptCaller.Create(ShockImpact));
905 }
906
907 static void ShockImpact()
908 {
909 static float intensity;
910 intensity += 0.25;
911 intensity = Math.WrapFloat(intensity, 0.25, 1);
912
913 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
914 player.SpawnShockEffect(intensity);
915 }
916
917 //---------------------------------------------
918 static void CBMiscPlugArrows(bool enabled)
919 {
920 g_Game.EnableEMPlugs(enabled);
921 }
922
923 //---------------------------------------------
924 static void CBMiscTargetableByAI(bool enabled, int id)
925 {
926 PlayerBase player = GetPlayer();
927 if (player)
928 DiagToggleRPC(enabled, player.m_CanBeTargetedDebug, ERPCs.DIAG_MISC_TARGETABLE_BY_AI);
929 }
930
931 //---------------------------------------------
932 static void CBMiscHitIndication()
933 {
934 PlayerBase player = GetPlayer();
935
936 if (DiagMenu.GetBool(DiagMenuIDs.MISC_HIT_INDICATION_DEBUG))
937 {
938 HitDirectionEffectBase.m_Mode = DiagMenu.GetValue(DiagMenuIDs.MISC_HIT_INDICATION_MODE);
939 HitDirectionEffectBase.m_ID = DiagMenu.GetValue(DiagMenuIDs.MISC_HIT_INDICATION_TYPE);
944 HitDirectionEffectBase.m_Scatter = DiagMenu.GetRangeValue(DiagMenuIDs.MISC_HIT_INDICATION_SCATTER);
945
946 if (player)
947 {
948 player.SetHitPPEEnabled(!DiagMenu.GetBool(DiagMenuIDs.MISC_HIT_INDICATION_DISABLE_PPE));
949 }
950 }
951 else
952 {
954 if (player)
955 {
956 player.SetHitPPEEnabled(CfgGameplayHandler.GetHitIndicationPPEEnabled());
957 }
958 }
959 }
960
961 //---------------------------------------------
962 static void CBMiscHitIndicationSpawnHit(bool enabled, int id)
963 {
964 DiagButtonAction(enabled, id, ScriptCaller.Create(SpawnHitDirEffect));
965 }
966
967 static void SpawnHitDirEffect()
968 {
969 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
970 g_Game.GetMission().GetHud().SpawnHitDirEffect(player, DiagMenu.GetRangeValue(DiagMenuIDs.MISC_HIT_INDICATION_SPAWN_HIT_DIRECTION), 1.0);
971 }
972
973 //---------------------------------------------
974 static void CBDebugMonitor(bool enabled, int id)
975 {
976 SendDiagRPC(enabled, ERPCs.DIAG_MISC_DEBUG_MONITOR, true);
977
978 if (enabled)
979 g_Game.GetMission().CreateDebugMonitor();
980 else
981 g_Game.GetMission().HideDebugMonitor();
982 }
983
984 static void CBPRADrawAll(bool enabled, int id)
985 {
988 }
989
990 static void CBPRADetect(bool enabled, int id)
991 {
992 if (enabled)
993 {
994 DayZPlayer player = g_Game.GetPlayer();
996 bool res = CfgPlayerRestrictedAreaHandler.IsPointInPlayerRestrictedArea(player.GetPosition(),pra);
997 if (res)
998 Print("player: " + player + " | at position: " + player.GetPosition() + " | intersects area: " + pra.areaName);
999 else
1000 Print("player: " + player + " | at position: " + player.GetPosition() + " | is NOT in any PlayerRestrictedArea");
1001 }
1002 DiagMenu.SetValue(DiagMenuIDs.MISC_PRA_DETECT, false);
1003 }
1004
1005 //-------------------------------------------------------
1006 //Dust effect
1007
1008 static void CBDEGroundEnable(bool enabled)
1009 {
1010 PlayerBase player = PlayerBase.Cast(GetGame().GetPlayer());
1012 }
1013
1014 static void CBDECloudEnable(bool enabled)
1015 {
1016 PlayerBase player = PlayerBase.Cast(GetGame().GetPlayer());
1018 }
1019
1020 //Ground effect
1021 static void CBDEGroundThreshold(float value)
1022 {
1023 PlayerBase player = PlayerBase.Cast(GetGame().GetPlayer());
1025 }
1026
1027 static void CBDEGroundRadius(float value)
1028 {
1029 PlayerBase player = PlayerBase.Cast(GetGame().GetPlayer());
1031 }
1032
1033 static void CBDEGroundIntensity(float value)
1034 {
1035 PlayerBase player = PlayerBase.Cast(GetGame().GetPlayer());
1037 }
1038
1039 static void CBDEGroundFromSurfaceEnable(bool value)
1040 {
1041 PlayerBase player = PlayerBase.Cast(GetGame().GetPlayer());
1043 }
1044
1045 static void CBDEWindWeight(float weight)
1046 {
1047 PlayerBase player = PlayerBase.Cast(GetGame().GetPlayer());
1049 }
1050
1051 static void CBDEGroundLifetimeRange(float value)
1052 {
1054 float minVal = DiagMenu.GetRangeValue(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_LIFETIME_MIN);
1055 float maxVal = DiagMenu.GetRangeValue(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_LIFETIME_MAX);
1056 dem.SetGroundEffectLifetimeRange(minVal, maxVal);
1057 }
1058
1059 static void CBDEGroundSizeRange(float value)
1060 {
1062 float minVal = DiagMenu.GetRangeValue(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_SIZE_MIN);
1063 float maxVal = DiagMenu.GetRangeValue(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_SIZE_MAX);
1064 dem.SetGroundEffectSizeRange(minVal, maxVal);
1065 }
1066
1067 //Cloud effect
1068 static void CBDECloudThreshold(float value)
1069 {
1070 PlayerBase player = PlayerBase.Cast(GetGame().GetPlayer());
1072 }
1073
1074 static void CBDECloudDistance(float value)
1075 {
1076 PlayerBase player = PlayerBase.Cast(GetGame().GetPlayer());
1078 }
1079
1080 static void CBDECloudCooldown(float value)
1081 {
1082 PlayerBase player = PlayerBase.Cast(GetGame().GetPlayer());
1085 }
1086
1087 static void CBDECloudDuration(float value)
1088 {
1089 PlayerBase player = PlayerBase.Cast(GetGame().GetPlayer());
1092 }
1093
1094 static void CBDECloudFromSurfaceEnable(bool value)
1095 {
1096 PlayerBase player = PlayerBase.Cast(GetGame().GetPlayer());
1098 }
1099
1100 //---------------------------------------------
1101 static void CBMiscFreezeEntity(bool enabled, int id)
1102 {
1103 DiagButtonAction(enabled, id, ScriptCaller.Create(FreezeEntity));
1104 }
1105
1106 static void FreezeEntity()
1107 {
1108 EntityAI entity;
1109 if (PluginSceneManager.GetInstance() && PluginSceneManager.GetInstance().IsOpened())
1110 {
1111 // Scene Editor
1112 SceneObject scene_obj = PluginSceneManager.GetInstance().GetSelectedSceneObject();
1113
1114 if (scene_obj)
1115 {
1116 entity = scene_obj.GetObject();
1117 }
1118 }
1119 else
1120 {
1121 // FreeDebugCamera
1122 FreeDebugCamera camera = FreeDebugCamera.GetInstance();
1123 entity = EntityAI.Cast(camera.GetCrosshairObject());
1124 }
1125
1126 if (entity)
1127 entity.DisableSimulation(!entity.GetIsSimulationDisabled());
1128 }
1129
1130 //---------------------------------------------
1131 static void CBMiscFreezePlayer(bool enabled, int id)
1132 {
1133 DiagButtonAction(enabled, id, ScriptCaller.Create(FreezePlayer));
1134 }
1135
1136 static void FreezePlayer()
1137 {
1138 EntityAI player = g_Game.GetPlayer();
1139 if (player)
1140 player.DisableSimulation(!player.GetIsSimulationDisabled());
1141 }
1142
1143 //---------------------------------------------
1144 static void CBVehicleDebugOutput(int value)
1145 {
1146
1147 int bitValue = 0;
1148 if (value == 1)//"Basic"
1149 {
1150 bitValue = EVehicleDebugOutputType.DAMAGE_APPLIED;
1151 }
1152 if (value == 2)//"Extended"
1153 {
1154 bitValue = EVehicleDebugOutputType.DAMAGE_APPLIED | EVehicleDebugOutputType.DAMAGE_CONSIDERED;
1155 }
1156 else if (value == 3)//"Contact"
1157 {
1158 bitValue = EVehicleDebugOutputType.CONTACT;
1159 }
1160 else if (value == 4)//"Basic" + "Contact"
1161 {
1162 bitValue = EVehicleDebugOutputType.DAMAGE_APPLIED | EVehicleDebugOutputType.CONTACT;
1163 }
1164 SendDiagRPC(bitValue, ERPCs.DIAG_VEHICLE_DEBUG_OUTPUT, true);
1165 }
1166
1167 //---------------------------------------------
1168 static void CBDumpCrashData(bool value)
1169 {
1170 if (value)
1171 {
1172 SendDiagRPC(true, ERPCs.DIAG_VEHICLES_DUMP_CRASH_DATA_REQUEST, true);
1173 DiagMenu.SetValue(DiagMenuIDs.VEHICLE_DUMP_CRASH_DATA, 0);
1174 }
1175 //DiagButtonRPC(value, DiagMenuIDs.VEHICLE_DUMP_CRASH_DATA, ERPCs.DIAG_VEHICLES_DUMP_CRASH_DATA_REQUEST, true);
1176
1177 }
1178
1179 //---------------------------------------------
1180 static void SimulateMode(bool enabled, int id, int rpc)
1181 {
1182 int value = DiagMenu.GetRangeValue(DiagMenuIDs.SIMULATE_MODE);
1183
1184 switch (value)
1185 {
1186 case 0:
1187 {
1188 DiagButtonRPC(enabled, id, rpc, true);
1189 break;
1190 }
1191 case 1:
1192 {
1193 DiagButtonRPCSelf(enabled, id, rpc);
1194 break;
1195 }
1196 case 2:
1197 {
1198 DiagButtonRPC(enabled, id, rpc, true);
1199 DiagButtonRPCSelf(enabled, id, rpc);
1200 break;
1201 }
1202 }
1203 }
1204
1205 //---------------------------------------------
1206 static void CBSimulateInfiniteLoop(bool enabled, int id)
1207 {
1208 SimulateMode(enabled, id, ERPCs.DIAG_SIMULATE_INFINITE_LOOP);
1209 }
1210
1211 //---------------------------------------------
1212 static void CBSimulateNullPointer(bool enabled, int id)
1213 {
1214 SimulateMode(enabled, id, ERPCs.DIAG_SIMULATE_NULL_POINTER);
1215 }
1216
1217 //---------------------------------------------
1218 static void CBSimulateDivisionByZero(bool enabled, int id)
1219 {
1220 SimulateMode(enabled, id, ERPCs.DIAG_SIMULATE_DIVISION_BY_ZERO);
1221 }
1222
1223 //---------------------------------------------
1224 static void CBSimulateErrorFunction(bool enabled, int id)
1225 {
1226 SimulateMode(enabled, id, ERPCs.DIAG_SIMULATE_ERROR_FUNCTION);
1227 }
1228
1229 //---------------------------------------------
1230 static void CBWeaponParticles(bool enabled)
1231 {
1232 DiagToggleRPCServer(enabled, PrtTest.m_GunParticlesState, ERPCs.DIAG_WEAPON_PARTICLES);
1233 }
1234
1235 //---------------------------------------------
1236 static void CBWeaponDebug(bool enabled)
1237 {
1238 PlayerBase player = GetPlayer();
1239 DiagToggleAction(enabled, ScriptCaller.Create(player.ShowWeaponDebug), player.IsWeaponDebugEnabled());
1240 }
1241
1242 //---------------------------------------------
1243 static void CBWeaponAimNoise(bool enabled)
1244 {
1245 PlayerBase player = GetPlayer();
1246 if (player)
1247 {
1248 DayZPlayerImplementAiming aimModel = player.GetAimingModel();
1249 DiagToggleAction(enabled, ScriptCaller.Create(aimModel.SetAimNoiseAllowed), aimModel.IsAimNoiseAllowed());
1250 }
1251 }
1252
1253 //---------------------------------------------
1254 static void CBWeaponRecoil(bool enabled)
1255 {
1256 PlayerBase player = GetPlayer();
1257 if (player)
1258 {
1259 DayZPlayerImplementAiming aimModel = player.GetAimingModel();
1260 DiagToggleRPC(enabled, aimModel.IsProceduralRecoilEnabled(), ERPCs.DIAG_WEAPON_RECOIL);
1261 }
1262 }
1263
1264 //---------------------------------------------
1265 static void CBWeaponUnlimitedAmmo(bool enabled)
1266 {
1267 DiagDebugAction(DebugActionType.UNLIMITED_AMMO, enabled);
1268 }
1269
1270 //---------------------------------------------
1271 static void CBWeaponBurstVersion(int value)
1272 {
1273 PlayerBase player = GetPlayer();
1274 WeaponManager wpnMngr = player.GetWeaponManager();
1275 DiagToggleRPC(value, wpnMngr.GetBurstOption(), ERPCs.DIAG_WEAPON_BURST_VERSION);
1276 }
1277
1278 //---------------------------------------------
1279 static void CBBleedingSources(bool enabled)
1280 {
1281 PlayerBase player = GetPlayer();
1282 player.GetBleedingManagerRemote().SetDiag(enabled);
1283 }
1284
1285 //---------------------------------------------
1286 static void CBBleedingDisableBloodLoss(bool enabled)
1287 {
1288 SendDiagRPC(enabled, ERPCs.DIAG_BLEEDING_DISABLE_BLOOD_LOSS, true);
1289 }
1290
1291 //---------------------------------------------
1292 static void CBBleedingActivateSource(int value)
1293 {
1294 SendDiagRPC(value, ERPCs.DIAG_BLEEDING_ACTIVATE_SOURCE, true);
1295 }
1296
1297 //---------------------------------------------
1298 static void CBBleedingActivateAllSources(bool enabled, int id)
1299 {
1300 DiagButtonRPC(enabled, id, ERPCs.DIAG_BLEEDING_ACTIVATE_ALL_SOURCES, true);
1301 }
1302
1303 //---------------------------------------------
1304 static void CBBleedingActivateSourceLevel(int value)
1305 {
1306 PlayerBase player = GetPlayer();
1307 BleedingSourcesManagerBase mgr = player.GetBleedingManagerRemote();
1308
1309 int idx = 100; //invalid index, just deletes all
1310 if (value != 0)
1311 {
1312 string bone = ""; //lower-case!
1313 switch (value)
1314 {
1315 case 1: //PlayerConstants.BLEEDING_SOURCE_FLOW_MODIFIER_LOW
1316 bone = "lefttoebase";
1317 break;
1318
1319 case 2: //PlayerConstants.BLEEDING_SOURCE_FLOW_MODIFIER_MEDIUM
1320 bone = "leftarm";
1321 break;
1322
1323 case 3: //PlayerConstants.BLEEDING_SOURCE_FLOW_MODIFIER_HIGH
1324 bone = "neck";
1325 break;
1326 }
1327
1328 int count = mgr.m_BleedingSourceZone.Count();
1329
1330 for (int i = 0; i < count; ++i)
1331 {
1332 if (mgr.m_BleedingSourceZone.GetKey(i) == bone)
1333 {
1334 idx = i;
1335 break;
1336 }
1337 }
1338 }
1339
1340 CBBleedingActivateSource(idx);
1341 }
1342
1343 //---------------------------------------------
1344 static void CBBleedingReload(bool enabled, int id)
1345 {
1346 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
1347 BleedingSourcesManagerRemote bsMngrRem = player.GetBleedingManagerRemote();
1348 DiagButtonAction(enabled, id, ScriptCaller.Create(bsMngrRem.Reload));
1349 }
1350
1351 //---------------------------------------------
1352 static void CBBBleedingIndicators()
1353 {
1354 bool diagEnable = DiagMenu.GetBool(DiagMenuIDs.BLEEDINGINDICATORS);
1356 {
1358 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
1359 if (player && player.GetBleedingManagerRemote())
1360 {
1361 player.GetBleedingManagerRemote().Reload();
1362 }
1363 }
1364
1366
1368 {
1381
1382 DbgBleedingIndicationStaticInfo.m_DbgDropDesaturate = DiagMenu.GetBool(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_ENABLEDESATURATION);
1383 DbgBleedingIndicationStaticInfo.m_DbgDesaturationEnd = DiagMenu.GetRangeValue(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_DESATURATIONEND);
1389 }
1390 }
1391
1392 //---------------------------------------------
1393 static void CBLogsActions(bool enabled)
1394 {
1395 DiagToggleRPC(enabled, LogManager.IsActionLogEnable(), ERPCs.DIAG_LOGS_ACTIONS);
1396 }
1397
1398 //---------------------------------------------
1399 static void CBLogsWeapons(bool enabled)
1400 {
1401 DiagToggleRPC(enabled, LogManager.IsWeaponLogEnable(), ERPCs.DIAG_LOGS_WEAPONS);
1402 }
1403
1404 //---------------------------------------------
1405 static void CBLogsSync(bool enabled)
1406 {
1407 DiagToggleRPC(enabled, LogManager.IsSyncLogEnable(), ERPCs.DIAG_LOGS_SYNC);
1408 }
1409
1410 //---------------------------------------------
1411 static void CBLogsBaseBuilding(bool enabled)
1412 {
1413 DiagToggleRPC(enabled, LogManager.IsBaseBuildingLogEnable(), ERPCs.DIAG_LOGS_BASEBUILDING);
1414 }
1415
1416 //---------------------------------------------
1417 static void CBLogsSymptoms(bool enabled)
1418 {
1419 DiagToggleRPC(enabled, LogManager.IsSymptomLogEnable(), ERPCs.DIAG_LOGS_SYMPTOMS);
1420 }
1421
1422 //---------------------------------------------
1423 static void CBLogsInventoryMove(bool enabled)
1424 {
1425 DiagToggleRPC(enabled, LogManager.IsInventoryMoveLogEnable(), ERPCs.DIAG_LOGS_INVENTORY_MOVE);
1426 }
1427
1428 //---------------------------------------------
1429 static void CBLogsInventoryReservation(bool enabled)
1430 {
1431 DiagToggleRPC(enabled, LogManager.IsInventoryReservationLogEnable(), ERPCs.DIAG_LOGS_INVENTORY_RESERVATION);
1432 }
1433
1434 //---------------------------------------------
1435 static void CBLogsInventoryHFSM(bool enabled)
1436 {
1437 DiagToggleRPC(enabled, LogManager.IsInventoryHFSMLogEnable(), ERPCs.DIAG_LOGS_INVENTORY_HFSM);
1438 }
1439
1440 //---------------------------------------------
1441 static void CBLogsQuickbar(bool enabled)
1442 {
1443 DiagToggleRPC(enabled, LogManager.IsQuickbarLogEnable(), ERPCs.DIAG_LOGS_QUICKBAR);
1444 }
1445
1446 //---------------------------------------------
1447 static void CBLogsBleedingChances(bool enabled)
1448 {
1449 DiagToggleRPC(enabled, LogManager.IsBleedingChancesLogEnable(), ERPCs.DIAG_LOGS_BLEEDING_CHANCES);
1450 }
1451
1452 //---------------------------------------------
1453 static void CBTriggerDebug(bool enabled)
1454 {
1455 EnableDebugSystemClient(ESubscriberSystems.TRIGGERS, enabled);
1456 }
1457
1458 //---------------------------------------------
1459 static void CBBaseBuildingWood(bool enabled)
1460 {
1461 SendDiagRPC(enabled, ERPCs.DIAG_BASEBUILDING_WOOD, true);
1462 }
1463
1464 //---------------------------------------------
1465 static void CBBaseBuildingGate(bool enabled)
1466 {
1467 SendDiagRPC(enabled, ERPCs.DIAG_BASEBUILDING_GATE, true);
1468 }
1469
1470 //---------------------------------------------
1471 static void CBBaseBuildingFast(int value)
1472 {
1473 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
1474 player.GetConstructionActionData().SetFastConstructionMode(value);
1475 SendDiagRPC(value, ERPCs.DIAG_BASEBUILDING_FASTBUILD);
1476 }
1477
1478 //---------------------------------------------
1479 static void CBBaseBuildingDebug(bool enabled)
1480 {
1481 DiagMenu.SetValue(DiagMenuIDs.BASEBUILDING_COLLISIONDEBUG, enabled);
1482 ConstructionDebug.ResetValues();
1483 }
1484
1485 //---------------------------------------------
1486 static void CBBaseBuildingCollisionDebug(bool enabled)
1487 {
1488 if (DiagMenu.GetBool(DiagMenuIDs.BASEBUILDING_FULLDEBUG) && !enabled) //can't disable if main one is enabled
1489 DiagMenu.SetValue(DiagMenuIDs.BASEBUILDING_COLLISIONDEBUG, true);
1490 }
1491
1492 //---------------------------------------------
1493 static void CBFinishersFinisherForced(int value)
1494 {
1495 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
1496 DiagToggleRPC(value - 1, player.GetMeleeCombat().DebugGetForcedFinisherType(), ERPCs.DIAG_FINISHERS_FORCE_FINISHER);
1497 }
1498
1499 //---------------------------------------------
1500 static void CBCameraToolsEnableRemoteCamera(bool enabled)
1501 {
1502 PlayerBase player = GetPlayer();
1503
1504 if (!player)
1505 return;
1506
1507 if (!enabled && player.m_CameraToolsMenuClient)
1508 {
1509 player.m_CameraToolsMenuClient.DelayedDestroy();
1510 }
1511
1512 auto param = new Param2<bool, EntityAI>(enabled, g_Game.GetPlayer());
1513 g_Game.RPCSingleParam( null, ERPCs.DIAG_CAMERATOOLS_CAM_SUBSCRIBE, param, true );
1514 }
1515
1516 //---------------------------------------------
1517
1518 static void CBSetGeyserDiagData()
1519 {
1521 bool enabled = DiagMenu.GetBool(DiagMenuIDs.GEYSERDIAG_ENABLE);
1522 float timeInterval = DiagMenu.GetRangeValue(DiagMenuIDs.GEYSERDIAG_STATE_INTERVAL);
1523 float timeDuration = DiagMenu.GetRangeValue(DiagMenuIDs.GEYSERDIAG_STATE_DURATION);
1524
1526 Param params = new Param3<bool, float, float>(enabled, timeInterval, timeDuration);
1527 g_Game.RPCSingleParam(null, ERPCs.DIAG_GEYSER_VALUES, params, true);
1528 }
1529
1530 static void CBSetRadioGameplayLogging(bool enabled)
1531 {
1532 SendDiagRPC(enabled, ERPCs.DIAG_RADIO_GAMEPLAY_LOGGING);
1533 }
1534
1535#ifdef ROBOCLIENT
1536 //---------------------------------------------
1537 static void CBRoboclientActive(bool enabled)
1538 {
1539 PlayerBase player = GetPlayer();
1540
1541 if (!player || !player.m_Bot)
1542 return;
1543
1544 if (enabled)
1545 {
1546 player.m_Bot.Start();
1547 return;
1548 }
1549 player.m_Bot.Stop();
1550 }
1551
1552 //---------------------------------------------
1553 static void CBRoboclientRestart(bool enabled)
1554 {
1555 if (!enabled)
1556 return;
1557
1558 DiagMenu.SetValue(DiagMenuIDs.ROBOCLIENTS_RESTART, false);
1559 if (!DiagMenu.GetBool(DiagMenuIDs.ROBOCLIENTS_ACTIVE))
1560 return;
1561
1562 PlayerBase player = GetPlayer();
1563
1564 if (!player || !player.m_Bot)
1565 return;
1566
1567 player.m_Bot.Restart();
1568 }
1569
1570 //---------------------------------------------
1571 static void CBRoboclientChangeStateMachine(int index)
1572 {
1573 PlayerBase player = GetPlayer();
1574
1575 if (!player || !player.m_Bot)
1576 return;
1577
1578 player.m_Bot.ChangeStateMachine(index);
1579 }
1580#endif
1581
1582 //---------------------------------------------
1583 // Misc
1584 //---------------------------------------------
1585 static PlayerBase GetPlayer()
1586 {
1587 if (!g_Game)
1588 return null;
1589
1590 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
1591
1592 if (DiagMenu.GetBool(DiagMenuIDs.MISC_ACTION_ON_CURSOR))
1593 {
1594 float hitFraction;
1595 vector start = g_Game.GetCurrentCameraPosition();
1596 vector end = start + (g_Game.GetCurrentCameraDirection() * 5.0);
1597
1598 vector hitPos, hitNormal;
1599 Object hitObj;
1600
1601 PhxInteractionLayers hitMask = 0xFFFFFFFFFF;
1602
1603 DayZPhysics.RayCastBullet(start, end, hitMask, null, hitObj, hitPos, hitNormal, hitFraction);
1604 Class.CastTo(player, hitObj);
1605 }
1606
1607 return player;
1608 }
1609
1610 //---------------------------------------------
1611 // DebugAction
1612 //---------------------------------------------
1613 static void DiagDebugAction(DebugActionType type, bool enable)
1614 {
1615 int mask;
1616 if (enable)
1617 {
1618 mask = (ItemBase.GetDebugActionsMask() | type);
1619 }
1620 else
1621 {
1622 mask = (ItemBase.GetDebugActionsMask() & (~type));
1623 }
1624
1625 DiagToggleRPCAction(mask, ScriptCaller.Create(ItemBase.SetDebugActionsMask), ItemBase.HasDebugActionsMask(type), ERPCs.DIAG_ITEM_DEBUG_ACTIONS);
1626 }
1627
1628 //---------------------------------------------
1629 // SubscriberClient
1630 //---------------------------------------------
1631 static void EnableDebugSystemClient(ESubscriberSystems system, bool enable)
1632 {
1633 int mask;
1634 if (enable)
1635 {
1636 mask = (m_SystemsMask | system);//turn on bit
1637 }
1638 else
1639 {
1640 mask = (m_SystemsMask & (~system));//turn off bit
1641 }
1642
1643 if (mask != m_SystemsMask)
1644 {
1645 CachedObjectsParams.PARAM1_INT.param1 = mask;
1646 g_Game.RPCSingleParam( g_Game.GetPlayer(), ERPCs.DEV_DIAGMENU_SUBSCRIBE, CachedObjectsParams.PARAM1_INT, true, g_Game.GetPlayer().GetIdentity() );
1647 m_SystemsMask = mask;
1648 }
1649 }
1650
1651
1652 //---------------------------------------------
1653 // Helper diag functions
1654 //---------------------------------------------
1655 static void DiagButtonActionParams(bool enabled, int id, ScriptCaller action, Param params)
1656 {
1657 if ( enabled )
1658 {
1659 action.Invoke(params);
1660 DiagMenu.SetValue(id, false);
1661 }
1662 }
1663
1664 //---------------------------------------------
1665 static void DiagButtonAction(bool enabled, int id, ScriptCaller action)
1666 {
1667 DiagButtonActionParams(enabled, id, action, null);
1668 }
1669
1670 //---------------------------------------------
1671 static void DiagButtonRPC(bool enabled, int id, int rpc, bool serverOnly = false)
1672 {
1673 ScriptCaller action = ScriptCaller.Create(SendDiagRPCBasic);
1674 SendDiagRPCBasicParam params = new SendDiagRPCBasicParam(rpc, serverOnly);
1675
1676 DiagButtonActionParams(enabled, id, action, params);
1677 }
1678
1679 //---------------------------------------------
1680 static void DiagButtonRPCSelf(bool enabled, int id, int rpc)
1681 {
1682 ScriptCaller action = ScriptCaller.Create(SendDiagRPCSelfBasic);
1683 SendDiagRPCSelfBasicParam params = new SendDiagRPCSelfBasicParam(rpc);
1684
1685 DiagButtonActionParams(enabled, id, action, params);
1686 }
1687
1688 //---------------------------------------------
1689 static void DiagButtonRPCIntInt(bool enabled, int id, int value, int value2, int rpc, bool serverOnly = false)
1690 {
1691 ScriptCaller action = ScriptCaller.Create(SendDiagRPCParam);
1692
1693 CachedObjectsParams.PARAM2_INT_INT.param1 = value;
1694 CachedObjectsParams.PARAM2_INT_INT.param2 = value2;
1695 SendDiagRPCParamParam params = new SendDiagRPCParamParam(rpc, serverOnly, CachedObjectsParams.PARAM2_INT_INT);
1696
1697 DiagButtonActionParams(enabled, id, action, params);
1698 }
1699
1700 //---------------------------------------------
1701 static void DiagToggleRPC(bool value, int current, int rpc)
1702 {
1703 if (value != current)
1704 {
1705 SendDiagRPC(value, rpc, false);
1706 }
1707 }
1708
1709 //---------------------------------------------
1710 static void DiagToggleRPC(int value, int current, int rpc)
1711 {
1712 if (value != current)
1713 {
1714 SendDiagRPC(value, rpc, false);
1715 }
1716 }
1717
1718 //---------------------------------------------
1719 static void DiagToggleRPC(float value, int current, int rpc)
1720 {
1721 if (value != current)
1722 {
1723 SendDiagRPC(value, rpc, false);
1724 }
1725 }
1726
1727 //---------------------------------------------
1728 static void DiagToggleRPCServer(bool value, out bool current, int rpc)
1729 {
1730 if (value != current)
1731 {
1732 current = value;
1733 SendDiagRPC(value, rpc, true);
1734 }
1735 }
1736
1737 //---------------------------------------------
1738 static void DiagToggleRPCServer(int value, out int current, int rpc)
1739 {
1740 if (value != current)
1741 {
1742 current = value;
1743 SendDiagRPC(value, rpc, true);
1744 }
1745 }
1746
1747 //---------------------------------------------
1748 static void DiagToggleRPCServer(float value, out float current, int rpc)
1749 {
1750 if (value != current)
1751 {
1752 current = value;
1753 SendDiagRPC(value, rpc, true);
1754 }
1755 }
1756
1757 //---------------------------------------------
1758 static void DiagToggleRPCAction(int value, ScriptCaller action, int current, int rpc)
1759 {
1760 if (value != current)
1761 {
1762 SendDiagRPC(value, rpc);
1763 action.Invoke(value);
1764 }
1765 }
1766
1767 //---------------------------------------------
1768 static void DiagToggleAction(int value, ScriptCaller action, int current)
1769 {
1770 if (value != current)
1771 {
1772 action.Invoke(value);
1773 }
1774 }
1775
1776 //---------------------------------------------
1777 static void SendDiagRPCSelf(Param value, int rpc)
1778 {
1779 PlayerBase player = GetPlayer();
1780 if (player)
1781 {
1782 g_Game.RPCSelfSingleParam(player, rpc, value);
1783 }
1784 }
1785
1786 //---------------------------------------------
1787 static void SendDiagRPCSelfBasic(SendDiagRPCSelfBasicParam param)
1788 {
1789 SendDiagRPCSelf(null, param.param1);
1790 }
1791
1792 //---------------------------------------------
1793 static void SendDiagRPCSelfParam(SendDiagRPCSelfParamParam param)
1794 {
1795 SendDiagRPCSelf(param.param2, param.param1);
1796 }
1797
1798 //---------------------------------------------
1799 static void SendDiagRPC(Param value, int rpc, bool serverOnly = false)
1800 {
1801 PlayerBase player = GetPlayer();
1802 if (player)
1803 {
1804 PlayerIdentity playerIdentity = player.GetIdentity();
1805 if (g_Game.IsMultiplayer() && playerIdentity)
1806 {
1807 g_Game.RPCSingleParam(player, rpc, value, true, playerIdentity);
1808 }
1809
1810 if (!g_Game.IsMultiplayer() || !serverOnly)
1811 {
1812 g_Game.RPCSelfSingleParam(player, rpc, value);
1813 }
1814 }
1815 }
1816
1817 //---------------------------------------------
1818 static void SendDiagRPCBasic(SendDiagRPCBasicParam param)
1819 {
1820 SendDiagRPC(null, param.param1, param.param2);
1821 }
1822
1823 //---------------------------------------------
1824 static void SendDiagRPCParam(SendDiagRPCParamParam param)
1825 {
1826 SendDiagRPC(param.param3, param.param1, param.param2);
1827 }
1828
1829 //---------------------------------------------
1830 static void SendDiagRPC(int rpc, bool serverOnly = false)
1831 {
1832 SendDiagRPC(null, rpc, serverOnly);
1833 }
1834
1835 //---------------------------------------------
1836 static void SendDiagRPC(bool value, int rpc, bool serverOnly = false)
1837 {
1838 CachedObjectsParams.PARAM1_BOOL.param1 = value;
1839 SendDiagRPC(CachedObjectsParams.PARAM1_BOOL, rpc, serverOnly);
1840 }
1841
1842 //---------------------------------------------
1843 static void SendDiagRPC(int value, int rpc, bool serverOnly = false)
1844 {
1845 CachedObjectsParams.PARAM1_INT.param1 = value;
1846 SendDiagRPC(CachedObjectsParams.PARAM1_INT, rpc, serverOnly);
1847 }
1848
1849 //---------------------------------------------
1850 static void SendDiagRPC(float value, int rpc, bool serverOnly = false)
1851 {
1852 CachedObjectsParams.PARAM1_FLOAT.param1 = value;
1853 SendDiagRPC(CachedObjectsParams.PARAM1_FLOAT, rpc, serverOnly);
1854 }
1855
1856 //---------------------------------------------
1857 static void CBUpdateSBDummyServers()
1858 {
1859 m_SBDiagScriptInvoker.Invoke();
1860 }
1861
1862 static ScriptInvoker GetSBDummyServersInvoker()
1863 {
1864 return m_SBDiagScriptInvoker;
1865 }
1866#endif
1867}
enum EScriptInvokerInsertFlags ScriptCaller()
Designed to hold 1 valid call.
ActionOverrideData int
DayZGame g_Game
Определения DayZGame.c:4074
PhxInteractionLayers
Определения DayZPhysics.c:2
void DayZPlayerImplementFallDamage(DayZPlayer pPlayer)
Определения DayZPlayerImplementFallDamage.c:73
Mission mission
Определения DisplayStatus.c:28
float hitFraction
Определения DustKickupEffects.c:23
DiagMenuIDs
Определения EDiagMenuIDs.c:2
ERPCs
Определения ERPCs.c:2
PlayerBase GetPlayer()
Определения ModifierBase.c:51
DebugActionType
Определения PluginDiagMenu.c:7
PluginBase GetPlugin(typename plugin_type)
Определения PluginManager.c:326
void UiHintPanel(Widget parent_widget)
Определения UiHintPanel.c:324
ref map< string, ref BleedingSourceZone > m_BleedingSourceZone
Определения BleedingSourcesManagerBase.c:4
static ref Param1< bool > PARAM1_BOOL
Определения UtilityClasses.c:12
static ref Param1< int > PARAM1_INT
Определения UtilityClasses.c:11
static ref Param2< int, int > PARAM2_INT_INT
Определения UtilityClasses.c:16
static ref Param1< float > PARAM1_FLOAT
Определения UtilityClasses.c:13
static ref Param2< float, float > PARAM2_FLOAT_FLOAT
Определения UtilityClasses.c:21
static bool GetHitIndicationPPEEnabled()
Определения CfgGameplayHandler.c:412
static void DrawBoxesDebug(bool draw)
static void DrawPolygonLinesDebug(bool draw)
static bool IsPointInPlayerRestrictedArea(vector point, out PlayerRestrictedAreaInstance hitArea)
Super root of all classes in Enforce script.
Определения 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)
Определения DayZPhysics.c:124
Определения DayZPlayerImplement.c:87
void SetAimNoiseAllowed(bool state)
Определения DayZPlayerImplementAiming.c:129
at which point does the stabilization start to get affected
Определения DayZPlayerImplementAiming.c:33
static bool m_DbgEnableBleedingIndication
Определения BleedingIndicationStaticInfo.c:4
static float m_DbgDropProgressTreshold
Определения BleedingIndicationStaticInfo.c:11
static float m_DbgDropSizeVariationMax
Определения BleedingIndicationStaticInfo.c:15
static float m_DbgDropSizeVariationMin
Определения BleedingIndicationStaticInfo.c:14
static info (non-constants)
Определения BleedingIndicationStaticInfo.c:3
Определения DbgUI.c:60
Определения EnDebug.c:241
void SetGroundEffectIntensity(float intensity)
Определения DustEffectsManager.c:586
void SetGroundEffectWindWeight(float windWeight)
Определения DustEffectsManager.c:623
void SetCloudEffectThreshold(float threshold)
Определения DustEffectsManager.c:462
void SetCloudEffectCooldownMin(float cooldown)
Определения DustEffectsManager.c:497
void SetGroundEffectRadius(float radius)
Определения DustEffectsManager.c:608
void SetGroundEffectSizeRange(float minSize, float maxSize)
Определения DustEffectsManager.c:686
void SetCloudEffectDurationMax(float duration)
Определения DustEffectsManager.c:534
void SetCloudEffectDistance(float distance)
Определения DustEffectsManager.c:477
void SetGroundEffectReadFromSurfaceEnable(bool enable)
Определения DustEffectsManager.c:643
void SetGroundEffectLifetimeRange(float minLifetime, float maxLifetime)
Определения DustEffectsManager.c:670
static DustEffectManager GetDustEffectManager()
Определения DustEffectsManager.c:6
void SetCloudEffectReadFromSurfaceEnable(bool enable)
Определения DustEffectsManager.c:556
void SetCloudEffectEnable(bool enable)
Определения DustEffectsManager.c:431
void SetCloudEffectDurationMin(float duration)
Определения DustEffectsManager.c:529
void SetGroundEffectEnable(bool enable)
Определения DustEffectsManager.c:447
void SetCloudEffectCooldownMax(float cooldown)
Определения DustEffectsManager.c:502
void SetGroundEffectThreshold(float threshold)
Определения DustEffectsManager.c:571
static int m_RotationOverride
Определения HitDirectionBase.c:177
static float m_Scatter
Определения HitDirectionBase.c:178
static int m_ID
Определения HitDirectionBase.c:171
static int m_Mode
Определения HitDirectionBase.c:170
static float m_DurationMax
Определения HitDirectionBase.c:174
static float m_BreakPointBase
Определения HitDirectionBase.c:175
static void CheckValues()
range 0..180, randomized offset of direction to make it less acurate
Определения HitDirectionBase.c:181
static float m_DistanceAdjust
range 0..1, a point where the fading starts
Определения HitDirectionBase.c:176
proto native Transport GetTransport()
proto native int GetVehicleSeat()
Определения human.c:712
static bool IsWeaponLogEnable()
Определения 3_Game/DayZ/tools/Debug.c:829
static bool IsBaseBuildingLogEnable()
Определения 3_Game/DayZ/tools/Debug.c:809
static bool IsInventoryReservationLogEnable()
Определения 3_Game/DayZ/tools/Debug.c:769
static bool IsSymptomLogEnable()
Определения 3_Game/DayZ/tools/Debug.c:819
static bool IsSyncLogEnable()
Определения 3_Game/DayZ/tools/Debug.c:789
static bool IsInventoryHFSMLogEnable()
Определения 3_Game/DayZ/tools/Debug.c:779
static bool IsBleedingChancesLogEnable()
Определения 3_Game/DayZ/tools/Debug.c:849
static bool IsInventoryMoveLogEnable()
Определения 3_Game/DayZ/tools/Debug.c:759
static bool IsActionLogEnable()
Определения 3_Game/DayZ/tools/Debug.c:749
static bool IsQuickbarLogEnable()
Определения 3_Game/DayZ/tools/Debug.c:799
proto void SetParamByIndex(int paramIndex, void value)
Определения proto.c:268
Определения EnMath.c:7
Mission class.
Определения gameplay.c:686
Определения ObjectTyped.c:2
Определения PPEConstants.c:68
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
Определения param.c:12
Определения PlayerBaseClient.c:2
The class that will be instanced (moddable)
Определения gameplay.c:389
void PluginUniversalTemperatureSourceClient()
void PluginSceneManager()
Определения PluginSceneManager.c:21
void OnInit()
void OnRPC(PlayerBase player, int rpc_type, ParamsReadContext ctx)
Определения PluginDeveloper.c:110
Определения PluginDiagMenu.c:30
static bool m_GunParticlesState
Определения gameplay.c:1538
Определения gameplay.c:1537
EntityAI GetObject()
Определения SceneObject.c:59
Определения SceneObject.c:2
ScriptInvoker Class provide list of callbacks usage:
Определения 2_GameLib/DayZ/tools.c:116
proto bool Read(void value_in)
float GetSpecialtyLevel()
Определения SoftSkillsManager.c:296
bool GetSoftSkillsState()
Определения SoftSkillsManager.c:317
bool IsLinear()
Определения SoftSkillsManager.c:329
bool IsDebug()
Определения SoftSkillsManager.c:409
void CreateDebugWindow(bool create)
Определения SoftSkillsManager.c:377
override Shape DebugFreeAreaAtDoor(int currentSeat, float maxAllowedObjHeight=0.5, float horizontalExtents=0.5, float playerHeight=1.7)
Определения Car.c:129
Определения WeaponManager.c:2
Определения EnConvert.c:119
class DayZPlayerCameraResult DayZPlayerCamera(DayZPlayer pPlayer, HumanInputController pInput)
Определения dayzplayer.c:56
Serializer ParamsReadContext
Определения gameplay.c:15
DayZGame GetGame()
Определения gameplay.c:636
proto void Print(void var)
Prints content of variable to console/log.
static proto native void End()
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 SameLine()
static proto native void Spacer(int height)
static proto void SetValue(int id, int value)
Set value at the given script id.
static proto bool GetBool(int id, bool reverse=false)
Get value as bool from the given script id.
class DiagMenu Shape
don't call destructor directly. Use Destroy() instead
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()
Определения 3_Game/DayZ/tools/tools.c:349