DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
PluginDiagMenu.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{
11};
12
13#ifdef DIAG_DEVELOPER
14enum ESubscriberSystems
15{
16 TRIGGERS = 0x00000001,
17 //SYSTEM2 = 0x00000002,
18 //SYSTEM3 = 0x00000004,
19 //SYSTEM4 = 0x00000008,
20}
21
22typedef Param1<int> SendDiagRPCSelfBasicParam;
23typedef Param2<int,Param> SendDiagRPCSelfParamParam;
24
25typedef Param2<int,bool> SendDiagRPCBasicParam;
26typedef Param3<int,bool,Param> SendDiagRPCParamParam;
27#endif
28
30{
31#ifdef DIAG_DEVELOPER
32
33 int m_ModdedDiagID = DiagMenuIDs.MODDED_MENU;
34
35 // LEVEL 3 - Script > Misc > Hair Hiding
36 ref map<int,bool> m_HairHidingStateMap;
37 ref TStringArray m_HairSelectionArray;
38 int m_TotalHairLevelsAdjusted;
39
40 override void OnInit()
41 {
42 //----------------------
43 m_HairHidingStateMap = new map<int,bool>;
44 m_HairSelectionArray = new TStringArray;
45
46 g_Game.ConfigGetTextArray("cfgVehicles Head_Default simpleHiddenSelections", m_HairSelectionArray);
47 m_TotalHairLevelsAdjusted = m_HairSelectionArray.Count() - 1;
48 for (int i = 0; i < m_HairSelectionArray.Count(); ++i)
49 {
50 m_HairHidingStateMap.Insert(i, 1); //all considered "shown" on init
51 }
52
53 //----------------------
54
56
57 RegisterDiags();
58 }
59
60 override void OnDestroy()
61 {
63 }
64
65 protected void RegisterDiags()
66 {
67 RegisterDeveloperDiags();
68 RegisterModdedDiagsIDs();
69 RegisterModdedDiags();
70
71 if (m_ModdedDiagID == DiagMenuIDs.MODDED_MENU)
72 {
73 DiagMenu.Unregister(DiagMenuIDs.MODDED_MENU);
74 }
75 }
76
77 private void RegisterDeveloperDiags()
78 {
79 //---------------------------------------------------------------
80 // LEVEL 0
81 //---------------------------------------------------------------
82 DiagMenu.RegisterMenu(DiagMenuIDs.SCRIPTS_MENU, "Script", -1);
83 {
84 //---------------------------------------------------------------
85 // LEVEL 1 - Script
86 //---------------------------------------------------------------
87 DiagMenu.RegisterMenu(DiagMenuIDs.VEHICLES, "Vehicles", DiagMenuIDs.SCRIPTS_MENU);
88 {
89 //---------------------------------------------------------------
90 // LEVEL 2 - Script > Vehicles
91 //---------------------------------------------------------------
92 DiagMenu.RegisterItem(DiagMenuIDs.VEHICLE_DEBUG_OUTPUT, "lalt+6", "Crash Log", DiagMenuIDs.VEHICLES, "None, Basic, Extended, Contact, Basic+Contact");
93 DiagMenu.RegisterBool(DiagMenuIDs.VEHICLE_DUMP_CRASH_DATA, "lalt+7", "Dump Crash Data", DiagMenuIDs.VEHICLES);
94 }
95
96 //---------------------------------------------------------------
97 // LEVEL 1 - Script
98 //---------------------------------------------------------------
99 DiagMenu.RegisterMenu(DiagMenuIDs.INVENTORY_MENU, "Inventory", DiagMenuIDs.SCRIPTS_MENU);
100 {
101 //---------------------------------------------------------------
102 // LEVEL 2 - Script > Inventory
103 //---------------------------------------------------------------
104 DiagMenu.RegisterBool(DiagMenuIDs.INVENTORY_ENTITY_PLACEMENT_CALLBACK_DEBUG, "", "Placement Debug", DiagMenuIDs.INVENTORY_MENU);
105 }
106
107 //---------------------------------------------------------------
108 // LEVEL 1 - Script
109 //---------------------------------------------------------------
110 DiagMenu.RegisterMenu(DiagMenuIDs.TRANSFER_VALUES_MENU, "TransferValues", DiagMenuIDs.SCRIPTS_MENU);
111 {
112 //---------------------------------------------------------------
113 // LEVEL 2 - Script > TransferValues
114 //---------------------------------------------------------------
115 DiagMenu.RegisterBool(DiagMenuIDs.TRANSFER_VALUES_SHOW, "", "ShowValues", DiagMenuIDs.TRANSFER_VALUES_MENU);
116 }
117
118 //---------------------------------------------------------------
119 // LEVEL 1 - Script
120 //---------------------------------------------------------------
121 DiagMenu.RegisterMenu(DiagMenuIDs.CRAFTING_MENU, "Crafting", DiagMenuIDs.SCRIPTS_MENU);
122 {
123 //---------------------------------------------------------------
124 // LEVEL 2 - Script > Crafting
125 //---------------------------------------------------------------
126 DiagMenu.RegisterBool(DiagMenuIDs.CRAFTING_GENERATE, "", "Generate Cache", DiagMenuIDs.CRAFTING_MENU);
127 DiagMenu.RegisterBool(DiagMenuIDs.CRAFTING_INSTANT, "", "Debug Insta Crafting", DiagMenuIDs.CRAFTING_MENU);
128 DiagMenu.RegisterBool(DiagMenuIDs.CRAFTING_DUMP, "", "Dump recipes to file", DiagMenuIDs.CRAFTING_MENU);
129 }
130
131 //---------------------------------------------------------------
132 // LEVEL 1 - Script
133 //---------------------------------------------------------------
134 DiagMenu.RegisterMenu(DiagMenuIDs.CHEATS_MENU, "Cheats", DiagMenuIDs.SCRIPTS_MENU);
135 {
136 //---------------------------------------------------------------
137 // LEVEL 2 - Script > Cheats
138 //---------------------------------------------------------------
139 DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_MODIFIERS, "lalt+2", "Tick Modifiers", DiagMenuIDs.CHEATS_MENU);
140 DiagMenu.SetValue(DiagMenuIDs.CHEATS_MODIFIERS, true);
141 DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_KILL_PLAYER, "", "Kill Player", DiagMenuIDs.CHEATS_MENU);
142 DiagMenu.RegisterItem(DiagMenuIDs.CHEATS_INVINCIBILITY, "lalt+1", "Invincibility (IDDQD)", DiagMenuIDs.CHEATS_MENU, "Disabled,Partial,Full");
143 DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_DISABLE_STAMINA, "", "Disable stamina", DiagMenuIDs.CHEATS_MENU);
144 DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_RESET_PLAYER, "", "Reset Player", DiagMenuIDs.CHEATS_MENU);
145 DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_RESET_PLAYER_MAX, "lalt+3", "Reset Player Max", DiagMenuIDs.CHEATS_MENU);
146 DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_INVENTORY_ACCESS, "", "Inventory Access", DiagMenuIDs.CHEATS_MENU);
147 DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_FIX_ITEMS, "", "Fix Inventory Items", DiagMenuIDs.CHEATS_MENU);
148 }
149
150 //---------------------------------------------------------------
151 // LEVEL 1 - Script
152 //---------------------------------------------------------------
153 DiagMenu.RegisterMenu(DiagMenuIDs.PLAYER_AGENTS_MENU, "Player Agents", DiagMenuIDs.SCRIPTS_MENU);
154 {
155 //---------------------------------------------------------------
156 // LEVEL 2 - Script > Player Agents
157 //---------------------------------------------------------------
158 DiagMenu.RegisterBool(DiagMenuIDs.PLAYER_AGENTS_INJECTS_SHOW, "lalt+5", "Allow Inject Actions", DiagMenuIDs.PLAYER_AGENTS_MENU);
159 }
160
161 //---------------------------------------------------------------
162 // LEVEL 1 - Script
163 //---------------------------------------------------------------
164 DiagMenu.RegisterMenu(DiagMenuIDs.SOFT_SKILLS_MENU, "Soft Skills", DiagMenuIDs.SCRIPTS_MENU);
165 {
166 //---------------------------------------------------------------
167 // LEVEL 2 - Script > Soft Skills
168 //---------------------------------------------------------------
169 DiagMenu.RegisterBool(DiagMenuIDs.SOFT_SKILLS_SHOW_DEBUG, "", "Show Debug", DiagMenuIDs.SOFT_SKILLS_MENU);
170 DiagMenu.RegisterBool(DiagMenuIDs.SOFT_SKILLS_TOGGLE_STATE, "", "Enable SoftSkills", DiagMenuIDs.SOFT_SKILLS_MENU);
171 DiagMenu.RegisterBool(DiagMenuIDs.SOFT_SKILLS_TOGGLE_MODEL, "", "Enable linear model", DiagMenuIDs.SOFT_SKILLS_MENU);
172 DiagMenu.RegisterRange(DiagMenuIDs.SOFT_SKILLS_SPECIALTY_VALUE, "", "Set specialty value", DiagMenuIDs.SOFT_SKILLS_MENU, "-1, 1, 0, 0.01");
173 }
174
175 //---------------------------------------------------------------
176 // LEVEL 1 - Script
177 //---------------------------------------------------------------
178 DiagMenu.RegisterMenu(DiagMenuIDs.LIFESPAN_MENU, "Lifespan", DiagMenuIDs.SCRIPTS_MENU);
179 {
180 //---------------------------------------------------------------
181 // LEVEL 2 - Script > Lifespan
182 //---------------------------------------------------------------
183 DiagMenu.RegisterBool(DiagMenuIDs.LIFESPAN_BLOODY_HANDS, "", "Bloody hands", DiagMenuIDs.LIFESPAN_MENU);
184 DiagMenu.RegisterRange(DiagMenuIDs.LIFESPAN_PLAYTIME_UPDATE, "", "Playtime in minutes", DiagMenuIDs.LIFESPAN_MENU, "0, 600, 0, 10");
185 }
186
187 //---------------------------------------------------------------
188 // LEVEL 1 - Script
189 //---------------------------------------------------------------
190 DiagMenu.RegisterMenu(DiagMenuIDs.MISC_MENU, "Misc", DiagMenuIDs.SCRIPTS_MENU);
191 {
192 //---------------------------------------------------------------
193 // LEVEL 2 - Script > Misc
194 //---------------------------------------------------------------
195 DiagMenu.RegisterBool(DiagMenuIDs.MISC_DISABLE_PERSONAL_LIGHT, "", "Disable Personal Light", DiagMenuIDs.MISC_MENU);
196 DiagMenu.RegisterBool(DiagMenuIDs.MISC_ITEM_DEBUG_ACTIONS, "", "Item Debug Actions", DiagMenuIDs.MISC_MENU); // Is enabled by default now
197 DiagMenu.RegisterBool(DiagMenuIDs.MISC_LOG_PLAYER_STATS, "", "Log Player Stats", DiagMenuIDs.MISC_MENU);
198 DiagMenu.RegisterMenu(DiagMenuIDs.MISC_ACTION_TARGETS_MENU, "Action Targets", DiagMenuIDs.MISC_MENU);
199 {
200 //---------------------------------------------------------------
201 // LEVEL 3 - Script > Misc > Action Targets
202 //---------------------------------------------------------------
203 DiagMenu.RegisterBool(DiagMenuIDs.MISC_ACTION_TARGETS_NEW, "", "New AT Selection", DiagMenuIDs.MISC_ACTION_TARGETS_MENU, true);
204 DiagMenu.RegisterBool(DiagMenuIDs.MISC_ACTION_TARGETS_DEBUG, "", "Show Debug", DiagMenuIDs.MISC_ACTION_TARGETS_MENU);
205 DiagMenu.RegisterBool(DiagMenuIDs.MISC_ACTION_TARGETS_SELPOS_DEBUG, "", "Show selection pos debug", DiagMenuIDs.MISC_ACTION_TARGETS_MENU);
206 }
207 //---------------------------------------------------------------
208 // LEVEL 2 - Script > Misc
209 //---------------------------------------------------------------
210 DiagMenu.RegisterBool(DiagMenuIDs.MISC_PERMANENT_CROSSHAIR, "", "Enable permanent crosshair", DiagMenuIDs.MISC_MENU);
211 DiagMenu.RegisterBool(DiagMenuIDs.MISC_TELEPORT_BREAKS_SYNC, "", "Teleport Breaks Sync", DiagMenuIDs.MISC_MENU);
212 DiagMenu.RegisterBool(DiagMenuIDs.MISC_VEHICLE_GETOUT_BOX, "", "Debug transport freespace", DiagMenuIDs.MISC_MENU);
213 DiagMenu.RegisterBool(DiagMenuIDs.MISC_VEHICLE_GETOUT_RAYCAST, "", "Debug transport get out raycast", DiagMenuIDs.MISC_MENU);
214 DiagMenu.RegisterBool(DiagMenuIDs.MISC_TOGGLE_HUD, "", "Toggle HUD on/off", DiagMenuIDs.MISC_MENU);
215 DiagMenu.RegisterMenu(DiagMenuIDs.MISC_ENVIRONMENT_MENU, "Environment", DiagMenuIDs.MISC_MENU);
216 {
217 //---------------------------------------------------------------
218 // LEVEL 3 - Script > Misc > Environment
219 //---------------------------------------------------------------
220 DiagMenu.RegisterBool(DiagMenuIDs.MISC_ENVIRONMENT_DEBUG, "", "Show Environment stats", DiagMenuIDs.MISC_ENVIRONMENT_MENU);
221 DiagMenu.RegisterBool(DiagMenuIDs.MISC_ENVIRONMENT_LOGGING_DRYWET, "", "Log Player Dry/Wetness", DiagMenuIDs.MISC_ENVIRONMENT_MENU, false);
222
223 }
224 DiagMenu.RegisterBool(DiagMenuIDs.MISC_FALLDAMAGE_DEBUG, "", "Show FallDamage stats", DiagMenuIDs.MISC_MENU);
225 DiagMenu.RegisterRange(DiagMenuIDs.MISC_DISPLAY_PLAYER_INFO, "", "Display Player Info", DiagMenuIDs.MISC_MENU, "0,2,0,1");
226 DiagMenu.RegisterBool(DiagMenuIDs.MISC_UNIVERSAL_TEMPERATURE_SOURCES, "lalt+u", "Universal Temp Sources", DiagMenuIDs.MISC_MENU);
227 DiagMenu.RegisterBool(DiagMenuIDs.MISC_DRAW_CHECKERBOARD, "", "Draw Checkerboard on screen", DiagMenuIDs.MISC_MENU);
228 DiagMenu.RegisterBool(DiagMenuIDs.MISC_BULLET_IMPACT, "", "BulletImpact", DiagMenuIDs.MISC_MENU);
229 DiagMenu.RegisterBool(DiagMenuIDs.MISC_PRESENCE_NOTIFIER_DBG, "", "Show Presence to AI dbg", DiagMenuIDs.MISC_MENU);
230 DiagMenu.RegisterBool(DiagMenuIDs.MISC_GO_UNCONSCIOUS, "", "Go Unconscious", DiagMenuIDs.MISC_MENU);
231 DiagMenu.RegisterBool(DiagMenuIDs.MISC_GO_UNCONSCIOUS_DELAYED, "", "Uncons. in 10sec", DiagMenuIDs.MISC_MENU);
232 DiagMenu.RegisterBool(DiagMenuIDs.MISC_QUICK_RESTRAIN, "", "Quick Restrain", DiagMenuIDs.MISC_MENU);
233 DiagMenu.RegisterMenu(DiagMenuIDs.MISC_HAIR_MENU, "Hair Hiding", DiagMenuIDs.MISC_MENU);
234 {
235 //---------------------------------------------------------------
236 // LEVEL 3 - Script > Misc > Hair Hiding
237 //---------------------------------------------------------------
238 DiagMenu.RegisterBool(DiagMenuIDs.MISC_HAIR_DISPLAY_DEBUG, "", "Display Debug", DiagMenuIDs.MISC_HAIR_MENU);
239 DiagMenu.RegisterRange(DiagMenuIDs.MISC_HAIR_LEVEL, "", "Hair Level#", DiagMenuIDs.MISC_HAIR_MENU, string.Format("0,%1,0,1", m_TotalHairLevelsAdjusted));
240 DiagMenu.RegisterBool(DiagMenuIDs.MISC_HAIR_LEVEL_HIDE, "", "Toggle Hair Level", DiagMenuIDs.MISC_HAIR_MENU);
241 DiagMenu.RegisterBool(DiagMenuIDs.MISC_HAIR_HIDE_ALL, "", "Hide/Show All", DiagMenuIDs.MISC_HAIR_MENU);
242 }
243 //---------------------------------------------------------------
244 // LEVEL 2 - Script > Misc
245 //---------------------------------------------------------------
246 DiagMenu.RegisterBool(DiagMenuIDs.MISC_CAM_SHAKE, "", "Simulate Cam Shake", DiagMenuIDs.MISC_MENU);
247 DiagMenu.RegisterBool(DiagMenuIDs.MISC_QUICK_FISHING, "", "Quick Fishing", DiagMenuIDs.MISC_MENU);
248 DiagMenu.RegisterBool(DiagMenuIDs.MISC_HOLOGRAM, "lctrl+h", "Hologram placing debug", DiagMenuIDs.MISC_MENU);
249 DiagMenu.RegisterBool(DiagMenuIDs.MISC_SHOCK_IMPACT, "lalt+8", "ShockHitEffect", DiagMenuIDs.MISC_MENU);
250 DiagMenu.RegisterBool(DiagMenuIDs.MISC_SHOW_PLUG_ARROWS, "", "Show Energy Manager Plug Arrows", DiagMenuIDs.MISC_MENU);
251 DiagMenu.RegisterBool(DiagMenuIDs.MISC_BREATH_VAPOR_LVL, "", "Breath Vapor", DiagMenuIDs.MISC_MENU);
252 DiagMenu.SetValue(DiagMenuIDs.MISC_BREATH_VAPOR_LVL, true);
253 DiagMenu.RegisterBool(DiagMenuIDs.MISC_TARGETABLE_BY_AI, "", "Toggle Targetable By AI", DiagMenuIDs.MISC_MENU);
254 DiagMenu.SetValue(DiagMenuIDs.MISC_TARGETABLE_BY_AI, true);
255 DiagMenu.RegisterMenu(DiagMenuIDs.MISC_HIT_INDICATION_MENU, "Hit Indication", DiagMenuIDs.MISC_MENU);
256 {
257 //---------------------------------------------------------------
258 // LEVEL 3 - Script > Misc > Hit Indication
259 //---------------------------------------------------------------
260 DiagMenu.RegisterBool(DiagMenuIDs.MISC_HIT_INDICATION_DEBUG, "", "Enable Debug", DiagMenuIDs.MISC_HIT_INDICATION_MENU);
261 DiagMenu.RegisterBool(DiagMenuIDs.MISC_HIT_INDICATION_SPAWN_HIT, "", "Spawn Hit", DiagMenuIDs.MISC_HIT_INDICATION_MENU);
262 DiagMenu.RegisterRange(DiagMenuIDs.MISC_HIT_INDICATION_SPAWN_HIT_DIRECTION, "", "Spawn Hit Direction", DiagMenuIDs.MISC_HIT_INDICATION_MENU, "0, 359, 0, 1");
263 DiagMenu.RegisterItem(DiagMenuIDs.MISC_HIT_INDICATION_MODE, "", "Mode", DiagMenuIDs.MISC_HIT_INDICATION_MENU, "Disabled,Static,Dynamic");
264 DiagMenu.SetValue(DiagMenuIDs.MISC_HIT_INDICATION_MODE, 1);
265 DiagMenu.RegisterItem(DiagMenuIDs.MISC_HIT_INDICATION_TYPE, "", "Type", DiagMenuIDs.MISC_HIT_INDICATION_MENU, "Splash,Spike,Arrow");
266 DiagMenu.RegisterRange(DiagMenuIDs.MISC_HIT_INDICATION_DURATION, "", "Hit Duration Max", DiagMenuIDs.MISC_HIT_INDICATION_MENU, "0.1, 5.0, 1.0, 0.1");
267 DiagMenu.RegisterRange(DiagMenuIDs.MISC_HIT_INDICATION_BREAKPOINT, "", "Hit Breakpoint", DiagMenuIDs.MISC_HIT_INDICATION_MENU, "0.0, 1.0, 0.8, 0.05");
268 DiagMenu.RegisterRange(DiagMenuIDs.MISC_HIT_INDICATION_DISTANCE, "", "Distance Adjust", DiagMenuIDs.MISC_HIT_INDICATION_MENU, "0.0, 1.0, 0.0, 0.01");
269 DiagMenu.RegisterRange(DiagMenuIDs.MISC_HIT_INDICATION_ROTATION, "", "Rotation Override", DiagMenuIDs.MISC_HIT_INDICATION_MENU, "0, 360, 0, 15");
270 DiagMenu.RegisterRange(DiagMenuIDs.MISC_HIT_INDICATION_SCATTER, "", "Direction Scatter", DiagMenuIDs.MISC_HIT_INDICATION_MENU, "0, 90, 0, 1");
271 DiagMenu.RegisterBool(DiagMenuIDs.MISC_HIT_INDICATION_DISABLE_PPE, "", "Disable Hit PPE", DiagMenuIDs.MISC_HIT_INDICATION_MENU);
272 }
273 //---------------------------------------------------------------
274 // LEVEL 2 - Script > Misc
275 //---------------------------------------------------------------
276 DiagMenu.RegisterBool(DiagMenuIDs.MISC_FREEZE_ENTITY, "lalt+x", "Freeze entity", DiagMenuIDs.MISC_MENU);
277 DiagMenu.RegisterBool(DiagMenuIDs.MISC_CONNECTION_STATS, "lalt+4", "Show Connection Stats", DiagMenuIDs.MISC_MENU);
278 DiagMenu.RegisterBool(DiagMenuIDs.MISC_PLAYER_SYMPTOMS_SHOW, "", "Show States", DiagMenuIDs.MISC_MENU);
279 DiagMenu.RegisterBool(DiagMenuIDs.MISC_INPUT_DEVICE_DISCONNECT_DBG, "", "InputDevice states", DiagMenuIDs.MISC_MENU);
280 }
281
282 //---------------------------------------------------------------
283 // LEVEL 1 - Script
284 //---------------------------------------------------------------
285 DiagMenu.RegisterMenu(DiagMenuIDs.SIMULATE_MENU, "Simulate script", DiagMenuIDs.SCRIPTS_MENU);
286 {
287 //---------------------------------------------------------------
288 // LEVEL 2 - Script > Simulate script
289 //---------------------------------------------------------------
290 DiagMenu.RegisterRange(DiagMenuIDs.SIMULATE_MODE, "", "Server/Client/Both", DiagMenuIDs.SIMULATE_MENU,"0,2,0,1");
291 DiagMenu.RegisterBool(DiagMenuIDs.SIMULATE_INFINITE_LOOP, "", "Simulate infinite loop", DiagMenuIDs.SIMULATE_MENU);
292 DiagMenu.RegisterBool(DiagMenuIDs.SIMULATE_NULL_POINTER, "", "Simulate null pointer", DiagMenuIDs.SIMULATE_MENU);
293 DiagMenu.RegisterBool(DiagMenuIDs.SIMULATE_DIVISION_BY_ZERO, "", "Simulate division by 0", DiagMenuIDs.SIMULATE_MENU);
294 DiagMenu.RegisterBool(DiagMenuIDs.SIMULATE_ERROR_FUNCTION, "", "Simulate Error() function", DiagMenuIDs.SIMULATE_MENU);
295 }
296
297 //---------------------------------------------------------------
298 // LEVEL 1 - Script
299 //---------------------------------------------------------------
300 DiagMenu.RegisterMenu(DiagMenuIDs.MELEE_MENU, "Melee", DiagMenuIDs.SCRIPTS_MENU);
301 {
302 //---------------------------------------------------------------
303 // LEVEL 2 - Script > Melee
304 //---------------------------------------------------------------
305 DiagMenu.RegisterBool(DiagMenuIDs.MELEE_DEBUG, "", "Enable Melee Debug", DiagMenuIDs.MELEE_MENU);
306 DiagMenu.RegisterBool(DiagMenuIDs.MELEE_CONTINUOUS, "", "Continuous update", DiagMenuIDs.MELEE_MENU);
307 DiagMenu.RegisterBool(DiagMenuIDs.MELEE_SHOW_TARGETS, "", "Show targets", DiagMenuIDs.MELEE_MENU);
308 DiagMenu.RegisterBool(DiagMenuIDs.MELEE_DRAW_TARGETS, "", "Draw targets", DiagMenuIDs.MELEE_MENU);
309 DiagMenu.RegisterBool(DiagMenuIDs.MELEE_DRAW_RANGE, "", "Draw range", DiagMenuIDs.MELEE_MENU);
310 DiagMenu.RegisterBool(DiagMenuIDs.MELEE_DRAW_BLOCK_RANGE_AI, "", "Draw block range PVE", DiagMenuIDs.MELEE_MENU);
311 DiagMenu.RegisterBool(DiagMenuIDs.MELEE_DRAW_BLOCK_RANGE_PVP, "", "Draw block range PVP", DiagMenuIDs.MELEE_MENU);
312 }
313
314 //---------------------------------------------------------------
315 // LEVEL 1 - Script
316 //---------------------------------------------------------------
317 DiagMenu.RegisterMenu(DiagMenuIDs.WEAPON_MENU, "Weapon", DiagMenuIDs.SCRIPTS_MENU);
318 {
319 //---------------------------------------------------------------
320 // LEVEL 2 - Script > Weapon
321 //---------------------------------------------------------------
322 DiagMenu.RegisterBool(DiagMenuIDs.WEAPON_PARTICLES, "", "Enable gun particles", DiagMenuIDs.WEAPON_MENU);
323 DiagMenu.SetValue(DiagMenuIDs.WEAPON_PARTICLES, true);
324 DiagMenu.RegisterBool(DiagMenuIDs.WEAPON_DEBUG, "", "Show Debug", DiagMenuIDs.WEAPON_MENU); // Doesn't do anything anymore currently
325 DiagMenu.RegisterBool(DiagMenuIDs.WEAPON_AIM_NOISE, "", "Weapon Sway", DiagMenuIDs.WEAPON_MENU);
326 DiagMenu.SetValue(DiagMenuIDs.WEAPON_AIM_NOISE, true);
327 DiagMenu.RegisterBool(DiagMenuIDs.WEAPON_RECOIL, "", "Procedural Recoil", DiagMenuIDs.WEAPON_MENU);
328 DiagMenu.SetValue(DiagMenuIDs.WEAPON_RECOIL, true);
329 DiagMenu.RegisterBool(DiagMenuIDs.WEAPON_UNLIMITED_AMMO, "lalt+9", "Unlimited Ammo", DiagMenuIDs.WEAPON_MENU);
330 DiagMenu.RegisterItem(DiagMenuIDs.WEAPON_BURST_VERSION, "lctrl+0", "Burst Version", DiagMenuIDs.WEAPON_MENU, "Hold, Press");
331 DiagMenu.RegisterBool(DiagMenuIDs.WEAPON_CLAYMORE_DEBUG, "", "Claymore debugs", DiagMenuIDs.WEAPON_MENU);
332 }
333
334 //---------------------------------------------------------------
335 // LEVEL 1 - Script
336 //---------------------------------------------------------------
337 DiagMenu.RegisterMenu(DiagMenuIDs.BLEEDING_MENU, "Bleeding", DiagMenuIDs.SCRIPTS_MENU);
338 {
339 //---------------------------------------------------------------
340 // LEVEL 2 - Script > Bleeding
341 //---------------------------------------------------------------
342 DiagMenu.RegisterBool(DiagMenuIDs.BLEEDING_SOURCES, "", "Show Bleeding Sources", DiagMenuIDs.BLEEDING_MENU);
343 DiagMenu.RegisterBool(DiagMenuIDs.BLEEDING_DISABLE_BLOOD_LOSS, "", "Disable Blood Loss", DiagMenuIDs.BLEEDING_MENU);
344 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDING_ACTIVATE_SOURCE, "", "Activate Source #", DiagMenuIDs.BLEEDING_MENU, "1, 32, 0, 1");
345 DiagMenu.RegisterBool(DiagMenuIDs.BLEEDING_ACTIVATE_ALL_SOURCES, "", "Activate All Sources", DiagMenuIDs.BLEEDING_MENU);
346 DiagMenu.RegisterItem(DiagMenuIDs.BLEEDING_ACTIVATE_SOURCE_LEVEL, "", "Activate Blsource Level", DiagMenuIDs.BLEEDING_MENU, "None, Low, Medium, High");
347 DiagMenu.RegisterBool(DiagMenuIDs.BLEEDING_RELOAD, "", "Client Reload", DiagMenuIDs.BLEEDING_MENU);
348 DiagMenu.RegisterMenu(DiagMenuIDs.BLEEDINGINDICATORS_MENU, "Bleeding Indication", DiagMenuIDs.BLEEDING_MENU);
349 {
350 //---------------------------------------------------------------
351 // LEVEL 3 - Script > Bleeding > Bleeding Indication
352 //---------------------------------------------------------------
353 DiagMenu.RegisterBool(DiagMenuIDs.BLEEDINGINDICATORS, "", "Enable BleedingIndicators", DiagMenuIDs.BLEEDINGINDICATORS_MENU);
354 DiagMenu.SetValue(DiagMenuIDs.BLEEDINGINDICATORS, true);
355 DiagMenu.RegisterBool(DiagMenuIDs.BLEEDINGINDICATORS_USEVALUEOVERRIDES, "", "Enable Debug Overrides", DiagMenuIDs.BLEEDINGINDICATORS_MENU);
356 DiagMenu.SetValue(DiagMenuIDs.BLEEDINGINDICATORS_USEVALUEOVERRIDES, false);
357 DiagMenu.RegisterBool(DiagMenuIDs.BLEEDINGINDICATORS_DROP_RANDOMROTATION, "", "Enable Random Rotation", DiagMenuIDs.BLEEDINGINDICATORS_MENU);
358 DiagMenu.SetValue(DiagMenuIDs.BLEEDINGINDICATORS_DROP_RANDOMROTATION, true);
359 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_SEQUENCE_DURATION, "", "Sequence Duration", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.2, 5.0, " + BleedingIndicationConstants.SEQUENCE_DURATION_DEFAULT.ToString() + ", 0.01");
360 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_BASEDURATION, "", "Drop Anim Duration", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.1, 5.0, " + BleedingIndicationConstants.DROP_DURATION_LOW.ToString() + ", 0.05");
361 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_MINDELAY, "", "Drop Min Delay", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.0, 5.0, " + BleedingIndicationConstants.SEQUENCE_DROP_DELAY_MIN_LOW.ToString() + ", 0.05");
362 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_MAXDELAY, "", "Drop Max Delay", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.0, 5.0, " + BleedingIndicationConstants.SEQUENCE_DROP_DELAY_MAX_LOW.ToString() + ", 0.05");
363 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_PROGRESSTHRESHOLD, "", "Drop Progress Threshold", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.1, 1.0, " + BleedingIndicationConstants.DROP_PROGRESS_THRESHOLD.ToString() + ", 0.05");
364 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_STARTSIZE, "", "Drop Start Size", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.1, 1.0, " + BleedingIndicationConstants.DROP_SIZE_START_LOW.ToString() + ", 0.01");
365 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_ENDSIZE, "", "Drop End Size", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.1, 1.0, " + BleedingIndicationConstants.DROP_SIZE_END_LOW.ToString() + ", 0.01");
366 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_RNDSCALEMIN, "", "Drop Size Random Min", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.0, 2.0, " + BleedingIndicationConstants.DROP_SIZE_VARIATION_MIN_LOW.ToString() + ", 0.01");
367 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_RNDSCALEMAX, "", "Drop Size Random Max", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.0, 2.0, " + BleedingIndicationConstants.DROP_SIZE_VARIATION_MAX_LOW.ToString() + ", 0.01");
368 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_SCATTER, "", "Drop Scatter px", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.0, 500.0, " + BleedingIndicationConstants.DROP_SCATTER_LOW.ToString() + ", 1.0");
369 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_SLIDEDISTANCE, "", "Drop Slide Distance", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.0, 500.0, 0, 0.1");
370 DiagMenu.RegisterMenu(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU, "Color Debug", DiagMenuIDs.BLEEDINGINDICATORS_MENU);
371 {
372 //---------------------------------------------------------------
373 // LEVEL 4 - Script > Bleeding > Bleeding Indication > Color Debug
374 //---------------------------------------------------------------
375 DiagMenu.RegisterBool(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_ENABLEDESATURATION, "", "Desaturate", DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU);
376 DiagMenu.SetValue(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_ENABLEDESATURATION, true);
377 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_DESATURATIONEND, "", "Saturation End Value", DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU, "0.0, 1.0, " + BleedingIndicationConstants.DROP_COLOR_DESATURATIONEND.ToString() + ", 0.05");
378 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_R, "", "Red", DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU, "0.0, 255.0, " + BleedingIndicationConstants.DROP_COLOR_RED.ToString() + ", 1.0");
379 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_G, "", "Green", DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU, "0.0, 255.0, " + BleedingIndicationConstants.DROP_COLOR_GREEN.ToString() + ", 1.0");
380 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_B, "", "Blue", DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU, "0.0, 255.0, " + BleedingIndicationConstants.DROP_COLOR_BLUE.ToString() + ", 1.0");
381 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_A_START, "", "Alpha - Start", DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU, "0.0, 255.0, " + BleedingIndicationConstants.DROP_COLOR_ALPHA_START.ToString() + ", 1.0");
382 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_A_END, "", "Alpha - End", DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU, "0.0, 255.0, " + BleedingIndicationConstants.DROP_COLOR_ALPHA_END.ToString() + ", 1.0");
383 }
384 }
385 }
386
387 //---------------------------------------------------------------
388 // LEVEL 1 - Script
389 //---------------------------------------------------------------
390 DiagMenu.RegisterMenu(DiagMenuIDs.LOGS_MENU, "Logs", DiagMenuIDs.SCRIPTS_MENU);
391 {
392 //---------------------------------------------------------------
393 // LEVEL 2 - Script > Logs
394 //---------------------------------------------------------------
395 DiagMenu.RegisterBool(DiagMenuIDs.LOGS_ACTIONS, "", "Log Actions", DiagMenuIDs.LOGS_MENU);
396 DiagMenu.RegisterBool(DiagMenuIDs.LOGS_WEAPONS, "", "Log Weapons", DiagMenuIDs.LOGS_MENU);
397 DiagMenu.RegisterBool(DiagMenuIDs.LOGS_SYMPTOMS, "", "Log Symptoms", DiagMenuIDs.LOGS_MENU);
398 DiagMenu.RegisterMenu(DiagMenuIDs.LOGS_INVENTORY_MENU, "Inventory Logs", DiagMenuIDs.LOGS_MENU);
399 {
400 //---------------------------------------------------------------
401 // LEVEL 3 - Script > Logs > InventoryLogs
402 //---------------------------------------------------------------
403 DiagMenu.RegisterBool(DiagMenuIDs.LOGS_INVENTORY_MOVE, "", "Log Items move", DiagMenuIDs.LOGS_INVENTORY_MENU);
404 DiagMenu.RegisterBool(DiagMenuIDs.LOGS_INVENTORY_RESERVATION, "", "Log Reservations", DiagMenuIDs.LOGS_INVENTORY_MENU);
405 DiagMenu.RegisterBool(DiagMenuIDs.LOGS_INVENTORY_HFSM, "", "Log HandFSM", DiagMenuIDs.LOGS_INVENTORY_MENU);
406 }
407 }
408
409 //---------------------------------------------------------------
410 // LEVEL 1 - Script
411 //---------------------------------------------------------------
412 DiagMenu.RegisterMenu(DiagMenuIDs.TRIGGER_MENU, "Triggers", DiagMenuIDs.SCRIPTS_MENU);
413 {
414 //---------------------------------------------------------------
415 // LEVEL 2 - Script > Triggers
416 //---------------------------------------------------------------
417 DiagMenu.RegisterBool(DiagMenuIDs.TRIGGER_DEBUG, "", "Show Triggers", DiagMenuIDs.TRIGGER_MENU);
418 DiagMenu.RegisterBool(DiagMenuIDs.TRIGGER_PLAYER_DEBUG, "", "Show Player Touch", DiagMenuIDs.TRIGGER_MENU);
419 #ifdef TRIGGER_DEBUG_BASIC
420 DiagMenu.SetValue(DiagMenuIDs.TRIGGER_DEBUG, true);
421 DiagMenu.SetValue(DiagMenuIDs.TRIGGER_PLAYER_DEBUG, true);
422 #endif
423 }
424
425 //---------------------------------------------------------------
426 // LEVEL 1 - Script
427 //---------------------------------------------------------------
428 DiagMenu.RegisterMenu(DiagMenuIDs.BASEBUILDING_MENU, "Base Building", DiagMenuIDs.SCRIPTS_MENU);
429 {
430 //---------------------------------------------------------------
431 // LEVEL 2 - Script > Base Building
432 //---------------------------------------------------------------
433 DiagMenu.RegisterBool(DiagMenuIDs.BASEBUILDING_WOOD, "", "Spawn uses wood/metal", DiagMenuIDs.BASEBUILDING_MENU);
434 DiagMenu.RegisterBool(DiagMenuIDs.BASEBUILDING_GATE, "", "Spawn Fence makes gate", DiagMenuIDs.BASEBUILDING_MENU);
435 }
436
437 //---------------------------------------------------------------
438 // LEVEL 1 - Script
439 //---------------------------------------------------------------
440 DiagMenu.RegisterMenu(DiagMenuIDs.UNDERGROUND_MENU, "Underground Areas", DiagMenuIDs.SCRIPTS_MENU);
441 {
442 //---------------------------------------------------------------
443 // LEVEL 2 - Script > Underground Areas
444 //---------------------------------------------------------------
445 DiagMenu.RegisterBool(DiagMenuIDs.UNDERGROUND_SHOW_BREADCRUMB, "", "Show Breadcrumbs", DiagMenuIDs.UNDERGROUND_MENU);
446 DiagMenu.RegisterBool(DiagMenuIDs.UNDERGROUND_DISABLE_DARKENING, "lctrl+f", "Disable Darkening", DiagMenuIDs.UNDERGROUND_MENU);
447 }
448
449 //---------------------------------------------------------------
450 // LEVEL 1 - Script
451 //---------------------------------------------------------------
452 DiagMenu.RegisterMenu(DiagMenuIDs.FINISHERS_MENU, "Finishers", DiagMenuIDs.SCRIPTS_MENU);
453 {
454 //---------------------------------------------------------------
455 // LEVEL 2 - Script > Finishers
456 //---------------------------------------------------------------
457 DiagMenu.RegisterItem(DiagMenuIDs.FINISHERS_FINISHER_FORCED, "", "Forced Finisher: ", DiagMenuIDs.FINISHERS_MENU, "None,Liver,Neck");
458 }
459
460 //---------------------------------------------------------------
461 // LEVEL 1 - Script
462 //---------------------------------------------------------------
463 DiagMenu.RegisterMenu(DiagMenuIDs.SOUNDS_MENU, "Script Sounds", DiagMenuIDs.SCRIPTS_MENU);
464 {
465 //---------------------------------------------------------------
466 // LEVEL 2 - Script > Script Sounds
467 //---------------------------------------------------------------
468 DiagMenu.RegisterBool(DiagMenuIDs.SOUNDS_ITEM_IMPACT_SOUNDS, "", "Item impact sounds", DiagMenuIDs.SOUNDS_MENU);
469 }
470
471 //---------------------------------------------------------------
472 // LEVEL 1 - Script
473 //---------------------------------------------------------------
474 DiagMenu.RegisterMenu(DiagMenuIDs.CAMERATOOLS_MENU, "Cinematic Camera Tools", DiagMenuIDs.SCRIPTS_MENU);
475 {
476 //---------------------------------------------------------------
477 // LEVEL 2 - Script > Cinematic Camera Tools
478 //---------------------------------------------------------------
479 DiagMenu.RegisterBool(DiagMenuIDs.CAMERATOOLS_ENABLE_REMOTE_CAMERA, "", "Show remote camera", DiagMenuIDs.CAMERATOOLS_MENU);
480 DiagMenu.RegisterBool(DiagMenuIDs.CAMERATOOLS_ENABLE_REMOTE_CAMERA_BROADCAST, "", "Broadcast camera", DiagMenuIDs.CAMERATOOLS_MENU);
481 }
482 //---------------------------------------------------------------
483 // LEVEL 1 - Script
484 //---------------------------------------------------------------
485 DiagMenu.RegisterMenu(DiagMenuIDs.FEATURE_TIME_ACCEL_MENU, "Time Accel", DiagMenuIDs.SCRIPTS_MENU);
486 {
487 //---------------------------------------------------------------
488 // LEVEL 2 - Script > Time Accel
489 //---------------------------------------------------------------
490 DiagMenu.RegisterBool(DiagMenuIDs.FEATURE_TIME_ACCEL, "lalt+0", "Apply Time Accel", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU);
491 DiagMenu.RegisterRange(DiagMenuIDs.FEATURE_TIME_ACCEL_VALUE1, "", "Accel Factor Big", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU,"0,100,1,1");
492 DiagMenu.RegisterRange(DiagMenuIDs.FEATURE_TIME_ACCEL_VALUE2, "", "Accel Factor Small", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU,"0,0.95 ,0,0.05");
493 DiagMenu.RegisterBool(DiagMenuIDs.FEATURE_TIME_ACCEL_UG_ENTRANCES, "", "Underground Entrances", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU);
494 DiagMenu.RegisterBool(DiagMenuIDs.FEATURE_TIME_ACCEL_UG_RESERVOIR, "", "Underground Reservoir", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU);
495 DiagMenu.RegisterBool(DiagMenuIDs.FEATURE_TIME_ACCEL_ENERGY_CONSUME, "", "Energy Consumption", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU);
496 DiagMenu.RegisterBool(DiagMenuIDs.FEATURE_TIME_ACCEL_FOOD_DECAY, "", "Decay", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU);
497 }
498 }
499 }
500
501 //---------------------------------------------
502 protected int GetModdedDiagID()
503 {
504 return ++m_ModdedDiagID;
505 }
506
507 //---------------------------------------------
508 protected int GetModdedRootMenu()
509 {
510 return DiagMenuIDs.MODDED_MENU;
511 }
512
513 //---------------------------------------------
514 protected void RegisterModdedDiagsIDs();
515
516 //---------------------------------------------
517 protected void RegisterModdedDiags()
518 {
519 DiagMenu.RegisterMenu(DiagMenuIDs.MODDED_MENU, "Script - Modded", -1);
520 }
521
522 //---------------------------------------------
523 void OnRPC(PlayerBase player, int rpc_type, ParamsReadContext ctx)
524 {
525 EntityAI parent;
526 Class.CastTo(parent, player.GetParent());
527
528 switch (rpc_type)
529 {
530 //---------------------------------------------------------------
531 // Misc, multipurpose
532 //---------------------------------------------------------------
533 case ERPCs.DIAG_ITEM_DEBUG_ACTIONS:
534 {
536 ItemBase.SetDebugActionsMask(CachedObjectsParams.PARAM1_INT.param1);
537 break;
538 }
539
540
541 //---------------------------------------------------------------
542 // LEVEL 2 - Script > Player States
543 //---------------------------------------------------------------
544 case ERPCs.DIAG_PLAYER_SYMPTOMS_DEBUG_ON:
545 case ERPCs.DIAG_PLAYER_SYMPTOMS_DEBUG_OFF:
546 case ERPCs.DIAG_PLAYER_SYMPTOMS_DEBUG:
547 {
548 if (player.GetSymptomManager())
549 {
550 player.GetSymptomManager().OnRPCDebug(rpc_type, ctx);
551 }
552 break;
553 }
554
555
556
557 //---------------------------------------------------------------
558 // LEVEL 2 - Script > Crafting
559 //---------------------------------------------------------------
560 case ERPCs.DIAG_CRAFTING_INSTANT:
561 {
563 {
564 PluginRecipesManager pluginRecipesManager = PluginRecipesManager.Cast(GetPlugin(PluginRecipesManager));
565 pluginRecipesManager.SetEnableDebugCrafting(CachedObjectsParams.PARAM1_INT.param1);
566 }
567 break;
568 }
569
570
571 //---------------------------------------------------------------
572 // LEVEL 2 - Script > Cheats
573 //---------------------------------------------------------------
574 case ERPCs.DIAG_CHEATS_MODIFIERS:
575 {
577 player.SetModifiers(CachedObjectsParams.PARAM1_INT.param1);
578 break;
579 }
580
581 //---------------------------------------------------------------
582 case ERPCs.DIAG_CHEATS_KILL_PLAYER:
583 {
584 player.SetHealth("","", -1);
585 break;
586 }
587
588 //---------------------------------------------------------------
589 case ERPCs.DIAG_CHEATS_INVINCIBILITY:
590 {
592 {
593 switch (CachedObjectsParams.PARAM1_INT.param1)
594 {
595 case 0:
596 {
597 if (parent)
598 {
599 parent.SetAllowDamage(true);
600 parent.SetCanBeDestroyed(true);
601 }
602
603 player.SetAllowDamage(true);
604 player.SetCanBeDestroyed(true);
605 break;
606 }
607 case 1:
608 {
609 if (parent)
610 {
611 parent.SetAllowDamage(true);
612 parent.SetCanBeDestroyed(false);
613 }
614
615 player.SetAllowDamage(true);
616 player.SetCanBeDestroyed(false);
617 break;
618 }
619 case 2:
620 {
621 if (parent)
622 {
623 parent.SetAllowDamage(false);
624 }
625
626 player.SetAllowDamage(false);
627 break;
628 }
629 }
630 break;
631 }
632 }
633
634 //---------------------------------------------------------------
635 case ERPCs.DIAG_CHEATS_DISABLE_STAMINA:
636 {
638 player.SetStaminaEnabled(CachedObjectsParams.PARAM1_INT.param1);
639 break;
640 }
641
642 //---------------------------------------------------------------
643 case ERPCs.DIAG_CHEATS_RESET_PLAYER:
644 {
645 player.ResetPlayer(false);
646 break;
647 }
648
649 //---------------------------------------------------------------
650 case ERPCs.DIAG_CHEATS_RESET_PLAYER_MAX:
651 {
652 player.ResetPlayer(true);
653 break;
654 }
655
656 //---------------------------------------------------------------
657 case ERPCs.DIAG_CHEATS_INVENTORY_ACCESS:
658 {
660 player.DEBUG_INVENTORY_ACCESS = CachedObjectsParams.PARAM1_INT.param1;
661 break;
662 }
663
664 //---------------------------------------------------------------
665 case ERPCs.DIAG_CHEATS_ITEMS_FIX:
666 {
667 player.FixAllInventoryItems();
668 break;
669 }
670
671 //---------------------------------------------------------------
672 // LEVEL 2 - Script > Soft Skills
673 //---------------------------------------------------------------
674 case ERPCs.DIAG_SOFT_SKILLS_SHOW_DEBUG:
675 {
677 {
679 {
680 player.GetSoftSkillsManager().StartSynchTimer();
681 }
682 else
683 {
684 player.GetSoftSkillsManager().StopSynchTimer();
685 player.GetSoftSkillsManager().ResetDebugWindow();
686 }
687 }
688 break;
689 }
690
691 //---------------------------------------------------------------
692 case ERPCs.DIAG_SOFT_SKILLS_TOGGLE_STATE:
693 {
695 player.GetSoftSkillsManager().SetSoftSkillsState(CachedObjectsParams.PARAM1_BOOL.param1);
696 break;
697 }
698
699 //---------------------------------------------------------------
700 case ERPCs.DIAG_SOFT_SKILLS_TOGGLE_MODEL:
701 {
703 player.GetSoftSkillsManager().SetLinearState(CachedObjectsParams.PARAM1_BOOL.param1) ;
704 break;
705 }
706
707 //---------------------------------------------------------------
708 case ERPCs.DIAG_SOFT_SKILLS_SPECIALTY_VALUE:
709 {
711 {
712 SoftSkillsManager softSkillsMngr = player.GetSoftSkillsManager();
714 softSkillsMngr.SynchSpecialtyLevel();
715 player.GetStatSpecialty().Set(CachedObjectsParams.PARAM1_FLOAT.param1);
716 }
717 break;
718 }
719
720 //---------------------------------------------------------------
721 // LEVEL 2 - Script > Lifespan
722 //---------------------------------------------------------------
723 case ERPCs.DIAG_LIFESPAN_BLOODY_HANDS:
724 {
726 {
728 pluginLifespan.UpdateBloodyHandsVisibility(player, CachedObjectsParams.PARAM1_BOOL.param1);
729 }
730 break;
731 }
732
733 //---------------------------------------------------------------
734 case ERPCs.DIAG_LIFESPAN_PLAYTIME_UPDATE:
735 {
737 {
738 //reset playtime
739 player.StatUpdate("playtime", player.StatGet("playtime") * -1);
740 //set new playtime
741 player.StatUpdate("playtime", CachedObjectsParams.PARAM1_FLOAT.param1 );
742 player.SetLastShavedSeconds( 0 );
743 //update lifespan
744 PluginLifespan pluginLifespann = PluginLifespan.Cast(GetPlugin(PluginLifespan));
745 pluginLifespann.ChangeFakePlaytime( player, CachedObjectsParams.PARAM1_FLOAT.param1 );
746 pluginLifespann.UpdateLifespan( player, true );
747 }
748 break;
749 }
750
751
752 //---------------------------------------------------------------
753 // LEVEL 2 - Script > Misc
754 //---------------------------------------------------------------
755 case ERPCs.DIAG_MISC_LOG_PLAYER_STATS:
756 {
758 player.GetPlayerStats().SetAllowLogs(CachedObjectsParams.PARAM1_BOOL.param1);
759 break;
760 }
761
762 //---------------------------------------------------------------
763
764 //---------------------------------------------------------------
765 // LEVEL 2 - Script > Misc -> Environment
766 //---------------------------------------------------------------
767 case ERPCs.DIAG_MISC_ENVIRONMENT_DEBUG:
768 {
770 {
771 if (player.m_Environment)
772 player.m_Environment.m_Debug = CachedObjectsParams.PARAM1_BOOL.param1;
773 }
774 break;
775 }
776
777 case ERPCs.DIAG_MISC_ENVIRONMENT_LOGGING_DRYWET:
778 {
780 {
781 if (player.m_Environment)
782 player.m_Environment.m_DebugLogDryWet = CachedObjectsParams.PARAM1_BOOL.param1;
783 }
784 break;
785 }
786
787 //---------------------------------------------------------------
788 // LEVEL 2 - Script > Misc
789 //---------------------------------------------------------------
790 case ERPCs.DIAG_MISC_FALLDAMAGE_DEBUG:
791 {
793 {
794 if (player.GetFallDamage())
795 player.GetFallDamage().m_Debug = CachedObjectsParams.PARAM1_BOOL.param1;
796 }
797 break;
798 }
799
800 //---------------------------------------------------------------
801 case ERPCs.DIAG_MISC_GO_UNCONSCIOUS:
802 {
803 GoUnconscious(player);
804 break;
805 }
806
807 //---------------------------------------------------------------
808 case ERPCs.DIAG_MISC_GO_UNCONSCIOUS_DELAYED:
809 {
810 GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(GoUnconscious, 10000, false, player);
811 break;
812 }
813
814 //---------------------------------------------------------------
815 case ERPCs.DIAG_MISC_QUICK_RESTRAIN:
816 {
818 player.SetQuickRestrain(CachedObjectsParams.PARAM1_BOOL.param1);
819 break;
820 }
821
822 //---------------------------------------------------------------
823 // LEVEL 3 - Script > Misc > Hair Hiding
824 //---------------------------------------------------------------
825 case ERPCs.DIAG_MISC_HAIR_LEVEL_HIDE:
826 {
828 {
829 player.SetHairLevelToHide(CachedObjectsParams.PARAM2_INT_INT.param1, CachedObjectsParams.PARAM2_INT_INT.param2, true);
830 player.UpdateHairSelectionVisibility(true);
831 }
832 break;
833 }
834
835 //---------------------------------------------------------------
836 // LEVEL 2 - Script > Misc
837 //---------------------------------------------------------------
838 case ERPCs.DIAG_MISC_QUICK_FISHING:
839 {
841 player.SetQuickFishing(CachedObjectsParams.PARAM1_BOOL.param1);
842 break;
843 }
844
845 //---------------------------------------------------------------
846 case ERPCs.DIAG_MISC_TARGETABLE_BY_AI:
847 {
849 player.m_CanBeTargetedDebug = CachedObjectsParams.PARAM1_BOOL.param1;
850 break;
851 }
852
853 //---------------------------------------------------------------
854 // LEVEL 2 - Script > Simulate script
855 //---------------------------------------------------------------
856 case ERPCs.DIAG_SIMULATE_INFINITE_LOOP:
857 {
858 while ( true )
859 {
860 Print("simulating infinite loop");
861 }
862 break;
863 }
864
865 //---------------------------------------------------------------
866 case ERPCs.DIAG_SIMULATE_NULL_POINTER:
867 {
868 PlayerBase NULL_player = null;
869 NULL_player.SetHealth("","", -1);
870 break;
871 }
872
873 //---------------------------------------------------------------
874 case ERPCs.DIAG_SIMULATE_DIVISION_BY_ZERO:
875 {
876 int zero = 0;
877 int division_by_zero = 1/zero;
878 break;
879 }
880
881 //---------------------------------------------------------------
882 case ERPCs.DIAG_SIMULATE_ERROR_FUNCTION:
883 {
884 ErrorEx("Simulated error");
885 break;
886 }
887
888
889 //---------------------------------------------------------------
890 // LEVEL 2 - Script > Weapon
891 //---------------------------------------------------------------
892 case ERPCs.DIAG_WEAPON_PARTICLES:
893 {
896 break;
897 }
898
899 //---------------------------------------------------------------
900 case ERPCs.DIAG_WEAPON_RECOIL:
901 {
903 player.GetAimingModel().SetProceduralRecoilEnabled(CachedObjectsParams.PARAM1_BOOL.param1);
904 break;
905 }
906
907 //---------------------------------------------------------------
908 case ERPCs.DIAG_WEAPON_BURST_VERSION:
909 {
911 player.GetWeaponManager().SetBurstOption(CachedObjectsParams.PARAM1_INT.param1);
912 break;
913 }
914
915
916 //---------------------------------------------------------------
917 // LEVEL 2 - Script > Bleeding
918 //---------------------------------------------------------------
919 case ERPCs.DIAG_BLEEDING_DISABLE_BLOOD_LOSS:
920 {
922 player.GetBleedingManagerServer().SetBloodLoss(CachedObjectsParams.PARAM1_BOOL.param1);
923 break;
924 }
925
926 //---------------------------------------------------------------
927 case ERPCs.DIAG_BLEEDING_ACTIVATE_SOURCE:
928 {
930 player.GetBleedingManagerServer().DebugActivateBleedingSource(CachedObjectsParams.PARAM1_INT.param1);
931 break;
932 }
933
934 //---------------------------------------------------------------
935 case ERPCs.DIAG_BLEEDING_ACTIVATE_ALL_SOURCES:
936 {
937 player.GetBleedingManagerServer().ActivateAllBS();
938 break;
939 }
940
941
942 //---------------------------------------------------------------
943 // LEVEL 2 - Script > Logs
944 //---------------------------------------------------------------
945 case ERPCs.DIAG_LOGS_ACTIONS:
946 {
949 break;
950 }
951
952 //---------------------------------------------------------------
953 case ERPCs.DIAG_LOGS_WEAPONS:
954 {
957 break;
958 }
959
960 //---------------------------------------------------------------
961 case ERPCs.DIAG_LOGS_SYMPTOMS:
962 {
965 break;
966 }
967
968 //---------------------------------------------------------------
969 case ERPCs.DIAG_LOGS_INVENTORY_MOVE:
970 {
973 break;
974 }
975
976 //---------------------------------------------------------------
977 case ERPCs.DIAG_LOGS_INVENTORY_RESERVATION:
978 {
981 break;
982 }
983
984 //---------------------------------------------------------------
985 case ERPCs.DIAG_LOGS_INVENTORY_HFSM:
986 {
989 break;
990 }
991
992
993 //---------------------------------------------------------------
994 // LEVEL 2 - Script > Base Building
995 //---------------------------------------------------------------
996 case ERPCs.DIAG_BASEBUILDING_WOOD:
997 {
1000 break;
1001 }
1002
1003 //---------------------------------------------------------------
1004 case ERPCs.DIAG_BASEBUILDING_GATE:
1005 {
1007 DiagMenu.SetValue(DiagMenuIDs.BASEBUILDING_GATE, CachedObjectsParams.PARAM1_BOOL.param1);
1008 break;
1009 }
1010
1011
1012 //---------------------------------------------------------------
1013 // LEVEL 2 - Script > Finishers
1014 //---------------------------------------------------------------
1015 case ERPCs.DIAG_FINISHERS_FORCE_FINISHER:
1016 {
1018 player.GetMeleeCombat().DebugSetForcedFinisherType(CachedObjectsParams.PARAM1_INT.param1);
1019 break;
1020 }
1021
1022
1023 //---------------------------------------------------------------
1024 // LEVEL 2 - Script > Cinematic Camera Tools
1025 //---------------------------------------------------------------
1026 case ERPCs.DIAG_CAMERATOOLS_CAM_DATA:
1027 {
1028 if (!player.m_CameraToolsMenuClient)
1029 {
1030 player.m_CameraToolsMenuClient = new CameraToolsMenuClient();
1031 }
1032
1033 player.m_CameraToolsMenuClient.OnRPC(ctx);
1034 break;
1035 }
1036
1037
1038 //---------------------------------------------------------------
1039 // LEVEL 2 - Script > Time Accel
1040 //---------------------------------------------------------------
1041 case ERPCs.DIAG_TIMEACCEL:
1042 {
1043 TimeAccelParam tap = new TimeAccelParam(false, 0, 0);
1044
1045 if (ctx.Read(tap))
1046 {
1047 FeatureTimeAccel.m_CurrentTimeAccel = tap;
1048 //Print("received from " + player);
1049 array<Man> players = new array<Man>();
1050 GetGame().GetPlayers(players);
1051 foreach (Man p : players)
1052 {
1053 if (p != player)// send to everyone except the one we receieved from
1054 {
1055 //Print("sending to " + p);
1056 GetGame().RPCSingleParam( p, ERPCs.DIAG_TIMEACCEL_CLIENT_SYNC, tap, true, p.GetIdentity());
1057 }
1058 }
1059
1060 /*
1061 Print(" -------- TimeAccelParam -------");
1062 Print(tap.param1);
1063 Print(tap.param2);
1064 Print(tap.param3);
1065 Print(" -------------------------------");
1066 Print(FeatureTimeAccel.GetFeatureTimeAccelEnabled(ETimeAccelCategories.UNDERGROUND_ENTRANCE));
1067 Print(FeatureTimeAccel.GetFeatureTimeAccelValue());
1068 Print(" ===============================");
1069 */
1070 }
1071 break;
1072 }
1073
1074 //---------------------------------------------------------------
1075 case ERPCs.DIAG_TIMEACCEL_CLIENT_SYNC:
1076 {
1077 TimeAccelParam tap2 = new TimeAccelParam(false, 0, 0);
1078
1079 if (ctx.Read(tap2))
1080 {
1081 int bigFactor = tap2.param2;
1082 float smallFactor = tap2.param2 - bigFactor;
1083 SetTimeAccelMenuState(tap2.param1, bigFactor, smallFactor, tap2.param3);
1084 FeatureTimeAccel.m_CurrentTimeAccel = tap2;
1085 }
1086 break;
1087 }
1088
1089 //---------------------------------------------------------------
1090 // LEVEL 2 - Script > Vehicles
1091 //---------------------------------------------------------------
1092 case ERPCs.DIAG_VEHICLE_DEBUG_OUTPUT:
1093 {
1095 CarScript.DEBUG_OUTPUT_TYPE = CachedObjectsParams.PARAM1_INT.param1;
1096 break;
1097 }
1098 //---------------------------------------------------------------
1099 case ERPCs.DIAG_VEHICLES_DUMP_CRASH_DATA_REQUEST:
1100 {
1102 CrashDebugData.SendData(player);
1103 break;
1104 }
1105 }
1106 }
1107
1108 //---------------------------------------------
1109 void GoUnconscious(PlayerBase player)
1110 {
1111 if (player.IsUnconscious())
1112 {
1113 player.SetHealth("", "Shock", 100);
1114 }
1115 else
1116 {
1117 player.m_UnconsciousEndTime = -60;
1118 player.SetHealth("", "Shock", 0);
1119 }
1120 }
1121
1122 //---------------------------------------------
1123 void InitTimeAccel()
1124 {
1125 FeatureTimeAccel.m_CurrentTimeAccel = GetTimeAccelMenuState();
1126
1127 string value;
1128
1129 if ( GetGame().CommandlineGetParam("timeAccel", value))
1130 {
1131 TStringArray params = new TStringArray();
1132
1133 value.Replace(" ","");
1134 value.Split(",", params);
1135
1136 bool enable = params[0].ToInt();
1137 int timeAccelBig = params[1].ToInt();
1138 float timeAccelSmall = params[2].ToFloat();
1139 int bitMask = params[3].ToInt();
1140
1141 SetTimeAccelMenuState(enable, timeAccelBig, timeAccelSmall, bitMask);
1142 }
1143 }
1144
1145 TimeAccelParam GetTimeAccelMenuState()
1146 {
1147 bool enable = DiagMenu.GetBool(DiagMenuIDs.FEATURE_TIME_ACCEL);
1148 float timeAccelBig = DiagMenu.GetRangeValue(DiagMenuIDs.FEATURE_TIME_ACCEL_VALUE1);
1149 float timeAccelSmall = DiagMenu.GetRangeValue(DiagMenuIDs.FEATURE_TIME_ACCEL_VALUE2);
1150 float timeAccel = timeAccelBig + timeAccelSmall;
1151 int bitMask = FeatureTimeAccel.GetTimeAccelBitmask();
1152
1153 TimeAccelParam param = new TimeAccelParam(enable, timeAccel, bitMask);
1154 return param;
1155 }
1156
1157 void SetTimeAccelMenuState(bool enable, int bigFactor, float smallFactor, int bitmask)
1158 {
1159 DiagMenu.SetValue(DiagMenuIDs.FEATURE_TIME_ACCEL, enable);
1160 DiagMenu.SetRangeValue(DiagMenuIDs.FEATURE_TIME_ACCEL_VALUE1, bigFactor);
1161 DiagMenu.SetRangeValue(DiagMenuIDs.FEATURE_TIME_ACCEL_VALUE2, smallFactor);
1162
1163 for (int i = 0; i < EnumTools.GetEnumSize(ETimeAccelCategories); ++i)
1164 {
1165 int bit = 1 << i;
1166 bool on = (bit & bitmask);
1167 DiagMenu.SetValue(FeatureTimeAccel.GetDiagIDByCategory(bit), on);
1168 }
1169 }
1170#endif
1171}
DayZGame g_Game
Definition DayZGame.c:3654
DiagMenuIDs
Definition EDiagMenuIDs.c:2
ERPCs
Definition ERPCs.c:2
DebugActionType
@ UNLIMITED_AMMO
@ GENERIC_ACTIONS
@ PLAYER_AGENTS
void PluginLifespan()
PluginBase GetPlugin(typename plugin_type)
static const float SEQUENCE_DURATION_DEFAULT
Used to pre-gen poisson probabilities, I REALLY wouldn't go over 10 here. Values above 12 cause overf...
proto native void GetPlayers(out array< Man > players)
override ScriptCallQueue GetCallQueue(int call_category)
Definition DayZGame.c:1153
void RPCSingleParam(Object target, int rpc_type, Param param, bool guaranteed, PlayerIdentity recipient=null)
see CGame.RPC
Definition Game.c:882
static ref Param2< int, int > PARAM2_INT_INT
static ref Param1< bool > PARAM1_BOOL
static ref Param1< float > PARAM1_FLOAT
static ref Param1< int > PARAM1_INT
Super root of all classes in Enforce script.
Definition EnScript.c:11
static int GetEnumSize(typename e)
Return amount of values in enum.
Definition EnConvert.c:623
static void SymptomLogEnable(bool enable)
Definition Debug.c:635
static void InventoryMoveLogEnable(bool enable)
Definition Debug.c:605
static void InventoryHFSMLogEnable(bool enable)
Definition Debug.c:625
static void ActionLogEnable(bool enable)
Definition Debug.c:595
static void WeaponLogEnable(bool enable)
Definition Debug.c:645
static void InventoryReservationLogEnable(bool enable)
Definition Debug.c:615
void OnInit()
void OnRPC(PlayerBase player, int rpc_type, ParamsReadContext ctx)
void OnDestroy()
static bool m_GunParticlesState
Definition gameplay.c:1475
proto void CallLater(func fn, int delay=0, bool repeat=false, void param1=NULL, void param2=NULL, void param3=NULL, void param4=NULL, void param5=NULL, void param6=NULL, void param7=NULL, void param8=NULL, void param9=NULL)
adds call into the queue with given parameters and arguments (arguments are held in memory until the ...
Serialization general interface. Serializer API works with:
Definition Serializer.c:56
proto bool Read(void value_in)
void SetSpecialtyLevel(float specialty_level)
proto string ToString()
proto native CGame GetGame()
proto void Print(void var)
Prints content of variable to console/log.
enum ShapeType ErrorEx
static proto void InitScriptDiags()
To be used before registering scripted diags.
static proto bool GetBool(int id, bool reverse=false)
Get value as bool from the given script id.
static proto void RegisterRange(int id, string shortcut, string name, int parent, string valuenames, func callback=null)
Register a new range item.
static proto void SetValue(int id, int value)
Set value at the given script id.
static proto void RegisterMenu(int id, string name, int parent)
Register a new menu.
static proto void RegisterBool(int id, string shortcut, string name, int parent, bool reverse=false, func callback=null)
Register a new bool item.
static proto void SetRangeValue(int id, float value)
Set range value at the given script id.
static proto void RegisterItem(int id, string shortcut, string name, int parent, string values, func callback=null)
Register a new item.
static proto void ClearScriptDiags()
To be used when scripted diags should not be present.
static proto float GetRangeValue(int id)
Get range value at the given script id.
static proto void Unregister(int id)
Unregister the item at given id.
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
array< string > TStringArray
Definition EnScript.c:685
void Split(string sample, out array< string > output)
Splits string into array of strings separated by 'sample'.
Definition EnString.c:396
proto int Replace(string sample, string replace)
Replace all occurrances of 'sample' in 'str' by 'replace'.
const int CALL_CATEGORY_SYSTEM
Definition tools.c:8