DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
PluginDiagMenu.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
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, "", "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 DiagMenu.RegisterBool(DiagMenuIDs.VEHICLE_DRAW_FLIP_CONTEXT, "", "Draw Flip Context", DiagMenuIDs.VEHICLES);
95 }
96
97 //---------------------------------------------------------------
98 // LEVEL 1 - Script
99 //---------------------------------------------------------------
100 DiagMenu.RegisterMenu(DiagMenuIDs.INVENTORY_MENU, "Inventory", DiagMenuIDs.SCRIPTS_MENU);
101 {
102 //---------------------------------------------------------------
103 // LEVEL 2 - Script > Inventory
104 //---------------------------------------------------------------
105 DiagMenu.RegisterBool(DiagMenuIDs.INVENTORY_ENTITY_PLACEMENT_CALLBACK_DEBUG, "", "Placement Debug", DiagMenuIDs.INVENTORY_MENU);
106 DiagMenu.RegisterBool(DiagMenuIDs.INVENTORY_USE_ACK_MOVE_HANDS, "", "Hands use ack for move", DiagMenuIDs.INVENTORY_MENU);
107 DiagMenu.RegisterBool(DiagMenuIDs.INVENTORY_ENABLE_DESYNC_REPAIR, "", "Enable desync repair", DiagMenuIDs.INVENTORY_MENU);
108 DiagMenu.SetValue(DiagMenuIDs.INVENTORY_ENABLE_DESYNC_REPAIR, true);
109
110 }
111
112 //---------------------------------------------------------------
113 // LEVEL 1 - Script
114 //---------------------------------------------------------------
115 DiagMenu.RegisterMenu(DiagMenuIDs.TRANSFER_VALUES_MENU, "TransferValues", DiagMenuIDs.SCRIPTS_MENU);
116 {
117 //---------------------------------------------------------------
118 // LEVEL 2 - Script > TransferValues
119 //---------------------------------------------------------------
120 DiagMenu.RegisterBool(DiagMenuIDs.TRANSFER_VALUES_SHOW, "", "ShowValues", DiagMenuIDs.TRANSFER_VALUES_MENU);
121 }
122
123 //---------------------------------------------------------------
124 // LEVEL 1 - Script
125 //---------------------------------------------------------------
126 DiagMenu.RegisterMenu(DiagMenuIDs.CRAFTING_MENU, "Crafting", DiagMenuIDs.SCRIPTS_MENU);
127 {
128 //---------------------------------------------------------------
129 // LEVEL 2 - Script > Crafting
130 //---------------------------------------------------------------
131 DiagMenu.RegisterBool(DiagMenuIDs.CRAFTING_GENERATE, "", "Generate Cache", DiagMenuIDs.CRAFTING_MENU);
132 DiagMenu.RegisterBool(DiagMenuIDs.CRAFTING_INSTANT, "", "Debug Insta Crafting", DiagMenuIDs.CRAFTING_MENU);
133 DiagMenu.RegisterBool(DiagMenuIDs.CRAFTING_DUMP, "", "Dump recipes to file", DiagMenuIDs.CRAFTING_MENU);
134 }
135
136 //---------------------------------------------------------------
137 // LEVEL 1 - Script
138 //---------------------------------------------------------------
139 DiagMenu.RegisterMenu(DiagMenuIDs.CHEATS_MENU, "Cheats", DiagMenuIDs.SCRIPTS_MENU);
140 {
141 //---------------------------------------------------------------
142 // LEVEL 2 - Script > Cheats
143 //---------------------------------------------------------------
144 DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_MODIFIERS, "lalt+2", "Tick Modifiers", DiagMenuIDs.CHEATS_MENU);
145 DiagMenu.SetValue(DiagMenuIDs.CHEATS_MODIFIERS, true);
146 DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_KILL_PLAYER, "", "Kill Player", DiagMenuIDs.CHEATS_MENU);
147 DiagMenu.RegisterItem(DiagMenuIDs.CHEATS_INVINCIBILITY, "lalt+1", "Invincibility (IDDQD)", DiagMenuIDs.CHEATS_MENU, "Disabled,Partial,Full");
148 DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_DISABLE_STAMINA, "", "Disable stamina", DiagMenuIDs.CHEATS_MENU);
149 DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_RESET_PLAYER, "", "Reset Player", DiagMenuIDs.CHEATS_MENU);
150 DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_RESET_PLAYER_MAX, "lalt+3", "Reset Player Max", DiagMenuIDs.CHEATS_MENU);
151 DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_INVENTORY_ACCESS, "", "Inventory Access", DiagMenuIDs.CHEATS_MENU);
152 DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_FIX_ITEMS, "", "Fix Inventory Items", DiagMenuIDs.CHEATS_MENU);
153 DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_CREATE_HIT, "lalt+5", "Create Hit Heavy", DiagMenuIDs.CHEATS_MENU);
154 DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_CREATE_HIT_LIGHT, "lalt+6", "Create Hit Light", DiagMenuIDs.CHEATS_MENU);
155 DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_CLIENT_DESYNC_INVENTORY, "", "Client desync inventory - local move", DiagMenuIDs.CHEATS_MENU);
156 DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_OLD_PROCESSINPUTDATA, "", "Old ProcessInputData", DiagMenuIDs.CHEATS_MENU);
157 }
158
159 //---------------------------------------------------------------
160 // LEVEL 1 - Script
161 //---------------------------------------------------------------
162 DiagMenu.RegisterMenu(DiagMenuIDs.PLAYER_AGENTS_MENU, "Player Agents", DiagMenuIDs.SCRIPTS_MENU);
163 {
164 //---------------------------------------------------------------
165 // LEVEL 2 - Script > Player Agents
166 //---------------------------------------------------------------
167 DiagMenu.RegisterBool(DiagMenuIDs.PLAYER_AGENTS_INJECTS_SHOW, "", "Allow Inject Actions", DiagMenuIDs.PLAYER_AGENTS_MENU);
168 }
169
170 //---------------------------------------------------------------
171 // LEVEL 1 - Script
172 //---------------------------------------------------------------
173 DiagMenu.RegisterMenu(DiagMenuIDs.SOFT_SKILLS_MENU, "Soft Skills", DiagMenuIDs.SCRIPTS_MENU);
174 {
175 //---------------------------------------------------------------
176 // LEVEL 2 - Script > Soft Skills
177 //---------------------------------------------------------------
178 DiagMenu.RegisterBool(DiagMenuIDs.SOFT_SKILLS_SHOW_DEBUG, "", "Show Debug", DiagMenuIDs.SOFT_SKILLS_MENU);
179 DiagMenu.RegisterBool(DiagMenuIDs.SOFT_SKILLS_TOGGLE_STATE, "", "Enable SoftSkills", DiagMenuIDs.SOFT_SKILLS_MENU);
180 DiagMenu.RegisterBool(DiagMenuIDs.SOFT_SKILLS_TOGGLE_MODEL, "", "Enable linear model", DiagMenuIDs.SOFT_SKILLS_MENU);
181 DiagMenu.RegisterRange(DiagMenuIDs.SOFT_SKILLS_SPECIALTY_VALUE, "", "Set specialty value", DiagMenuIDs.SOFT_SKILLS_MENU, "-1, 1, 0, 0.01");
182 }
183
184 //---------------------------------------------------------------
185 // LEVEL 1 - Script
186 //---------------------------------------------------------------
187 DiagMenu.RegisterMenu(DiagMenuIDs.LIFESPAN_MENU, "Lifespan", DiagMenuIDs.SCRIPTS_MENU);
188 {
189 //---------------------------------------------------------------
190 // LEVEL 2 - Script > Lifespan
191 //---------------------------------------------------------------
192 DiagMenu.RegisterBool(DiagMenuIDs.LIFESPAN_BLOODY_HANDS, "", "Bloody hands", DiagMenuIDs.LIFESPAN_MENU);
193 DiagMenu.RegisterRange(DiagMenuIDs.LIFESPAN_PLAYTIME_UPDATE, "", "Playtime in minutes", DiagMenuIDs.LIFESPAN_MENU, "0, 600, 0, 10");
194 }
195
196 //---------------------------------------------------------------
197 // LEVEL 1 - Script
198 //---------------------------------------------------------------
199 DiagMenu.RegisterMenu(DiagMenuIDs.TRANSPORT_MENU, "Transport", DiagMenuIDs.SCRIPTS_MENU);
200 {
201 //---------------------------------------------------------------
202 // LEVEL 2 - Script > Lifespan
203 //---------------------------------------------------------------
204 DiagMenu.RegisterBool(DiagMenuIDs.TRANSPORT_FREESPACE_DISABLED, "", "Get-Out Freespace Disabled", DiagMenuIDs.TRANSPORT_MENU);
205 DiagMenu.RegisterBool(DiagMenuIDs.TRANSPORT_FREESPACE_VIS, "", "Get-Out Freespace Vis.", DiagMenuIDs.TRANSPORT_MENU);
206 }
207
208 //---------------------------------------------------------------
209 // LEVEL 1 - Script
210 //---------------------------------------------------------------
211 DiagMenu.RegisterMenu(DiagMenuIDs.MISC_MENU, "Misc", DiagMenuIDs.SCRIPTS_MENU);
212 {
213 //---------------------------------------------------------------
214 // LEVEL 2 - Script > Misc
215 //---------------------------------------------------------------
216 DiagMenu.RegisterBool(DiagMenuIDs.MISC_ACTION_ON_CURSOR, "", "Perform Diag On Cursor", DiagMenuIDs.MISC_MENU);
217#ifdef DIAG_MISC_ACTION_ON_CURSOR
218 DiagMenu.SetValue(DiagMenuIDs.MISC_ACTION_ON_CURSOR, true);
219#endif
220 DiagMenu.RegisterBool(DiagMenuIDs.MISC_DISABLE_PERSONAL_LIGHT, "", "Disable Personal Light", DiagMenuIDs.MISC_MENU);
221 DiagMenu.RegisterBool(DiagMenuIDs.MISC_ITEM_DEBUG_ACTIONS, "", "Item Debug Actions", DiagMenuIDs.MISC_MENU); // Is enabled by default now
222 DiagMenu.RegisterBool(DiagMenuIDs.MISC_LOG_PLAYER_STATS, "", "Log Player Stats", DiagMenuIDs.MISC_MENU);
223 DiagMenu.RegisterMenu(DiagMenuIDs.MISC_ACTION_TARGETS_MENU, "Action Targets", DiagMenuIDs.MISC_MENU);
224 {
225 //---------------------------------------------------------------
226 // LEVEL 3 - Script > Misc > Action Targets
227 //---------------------------------------------------------------
228 DiagMenu.RegisterBool(DiagMenuIDs.MISC_ACTION_TARGETS_NEW, "", "New AT Selection", DiagMenuIDs.MISC_ACTION_TARGETS_MENU, true);
229 DiagMenu.RegisterBool(DiagMenuIDs.MISC_ACTION_TARGETS_DEBUG, "", "Show Debug", DiagMenuIDs.MISC_ACTION_TARGETS_MENU);
230 DiagMenu.RegisterBool(DiagMenuIDs.MISC_ACTION_TARGETS_SELPOS_DEBUG, "", "Show selection pos debug", DiagMenuIDs.MISC_ACTION_TARGETS_MENU);
231 }
232 //---------------------------------------------------------------
233 // LEVEL 2 - Script > Misc
234 //---------------------------------------------------------------
235 DiagMenu.RegisterBool(DiagMenuIDs.MISC_PERMANENT_CROSSHAIR, "", "Enable permanent crosshair", DiagMenuIDs.MISC_MENU);
236 DiagMenu.RegisterBool(DiagMenuIDs.MISC_TELEPORT_BREAKS_SYNC, "", "Teleport Breaks Sync", DiagMenuIDs.MISC_MENU);
237 DiagMenu.RegisterBool(DiagMenuIDs.MISC_TOGGLE_HUD, "", "Toggle HUD on/off", DiagMenuIDs.MISC_MENU);
238 DiagMenu.RegisterMenu(DiagMenuIDs.MISC_ENVIRONMENT_MENU, "Environment", DiagMenuIDs.MISC_MENU);
239 {
240 //---------------------------------------------------------------
241 // LEVEL 3 - Script > Misc > Environment
242 //---------------------------------------------------------------
243 DiagMenu.RegisterBool(DiagMenuIDs.MISC_ENVIRONMENT_DEBUG, "", "Show Environment stats", DiagMenuIDs.MISC_ENVIRONMENT_MENU);
244 DiagMenu.RegisterBool(DiagMenuIDs.MISC_ENVIRONMENT_LOGGING_DRYWET, "", "Log Player Dry/Wetness", DiagMenuIDs.MISC_ENVIRONMENT_MENU, false);
245 DiagMenu.RegisterBool(DiagMenuIDs.MISC_ENVIRONMENT_LOGGING_ITEMHEAT, "", "Log Player Item Heat", DiagMenuIDs.MISC_ENVIRONMENT_MENU, false);
246
247 }
248 DiagMenu.RegisterBool(DiagMenuIDs.MISC_FALLDAMAGE_DEBUG, "", "Show FallDamage stats", DiagMenuIDs.MISC_MENU);
249 DiagMenu.RegisterRange(DiagMenuIDs.MISC_DISPLAY_PLAYER_INFO, "", "Display Player Info", DiagMenuIDs.MISC_MENU, "0,2,0,1");
250 DiagMenu.RegisterBool(DiagMenuIDs.MISC_UNIVERSAL_TEMPERATURE_SOURCES, "lalt+u", "Universal Temp Sources", DiagMenuIDs.MISC_MENU);
251 DiagMenu.RegisterBool(DiagMenuIDs.MISC_TARGET_TEMPERATURE, "", "Target Temperature", DiagMenuIDs.MISC_MENU);
252 DiagMenu.RegisterBool(DiagMenuIDs.MISC_DRAW_CHECKERBOARD, "", "Draw Checkerboard on screen", DiagMenuIDs.MISC_MENU);
253 DiagMenu.RegisterBool(DiagMenuIDs.MISC_BULLET_IMPACT, "", "BulletImpact", DiagMenuIDs.MISC_MENU);
254 DiagMenu.RegisterBool(DiagMenuIDs.MISC_PRESENCE_NOTIFIER_DBG, "", "Show Presence to AI dbg", DiagMenuIDs.MISC_MENU);
255 DiagMenu.RegisterBool(DiagMenuIDs.MISC_GO_UNCONSCIOUS, "lctrl+m", "Go Unconscious", DiagMenuIDs.MISC_MENU);
256 DiagMenu.RegisterBool(DiagMenuIDs.MISC_GO_UNCONSCIOUS_DELAYED, "", "Uncons. in 10sec", DiagMenuIDs.MISC_MENU);
257 DiagMenu.RegisterBool(DiagMenuIDs.MISC_QUICK_RESTRAIN, "", "Quick Restrain", DiagMenuIDs.MISC_MENU);
258 DiagMenu.RegisterMenu(DiagMenuIDs.MISC_HAIR_MENU, "Hair Hiding", DiagMenuIDs.MISC_MENU);
259 {
260 //---------------------------------------------------------------
261 // LEVEL 3 - Script > Misc > Hair Hiding
262 //---------------------------------------------------------------
263 DiagMenu.RegisterBool(DiagMenuIDs.MISC_HAIR_DISPLAY_DEBUG, "", "Display Debug", DiagMenuIDs.MISC_HAIR_MENU);
264 DiagMenu.RegisterRange(DiagMenuIDs.MISC_HAIR_LEVEL, "", "Hair Level#", DiagMenuIDs.MISC_HAIR_MENU, string.Format("0,%1,0,1", m_TotalHairLevelsAdjusted));
265 DiagMenu.RegisterBool(DiagMenuIDs.MISC_HAIR_LEVEL_HIDE, "", "Toggle Hair Level", DiagMenuIDs.MISC_HAIR_MENU);
266 DiagMenu.RegisterBool(DiagMenuIDs.MISC_HAIR_HIDE_ALL, "", "Hide/Show All", DiagMenuIDs.MISC_HAIR_MENU);
267 }
268 //---------------------------------------------------------------
269 // LEVEL 2 - Script > Misc
270 //---------------------------------------------------------------
271 DiagMenu.RegisterBool(DiagMenuIDs.MISC_CAM_SHAKE, "", "Simulate Cam Shake", DiagMenuIDs.MISC_MENU);
272 DiagMenu.RegisterBool(DiagMenuIDs.MISC_QUICK_FISHING, "", "Quick Fishing", DiagMenuIDs.MISC_MENU);
273 DiagMenu.RegisterBool(DiagMenuIDs.MISC_HOLOGRAM, "lctrl+h", "Hologram placing debug", DiagMenuIDs.MISC_MENU);
274 DiagMenu.RegisterBool(DiagMenuIDs.MISC_SHOCK_IMPACT, "lalt+8", "ShockHitEffect", DiagMenuIDs.MISC_MENU);
275 DiagMenu.RegisterBool(DiagMenuIDs.MISC_SHOW_PLUG_ARROWS, "", "Show Energy Manager Plug Arrows", DiagMenuIDs.MISC_MENU);
276 DiagMenu.RegisterBool(DiagMenuIDs.MISC_BREATH_VAPOR_LVL, "", "Breath Vapor", DiagMenuIDs.MISC_MENU);
277 DiagMenu.SetValue(DiagMenuIDs.MISC_BREATH_VAPOR_LVL, true);
278 DiagMenu.RegisterBool(DiagMenuIDs.MISC_TARGETABLE_BY_AI, "lalt+t", "Toggle Targetable By AI", DiagMenuIDs.MISC_MENU);
279 DiagMenu.SetValue(DiagMenuIDs.MISC_TARGETABLE_BY_AI, true);
280 DiagMenu.RegisterMenu(DiagMenuIDs.MISC_HIT_INDICATION_MENU, "Hit Indication", DiagMenuIDs.MISC_MENU);
281 {
282 //---------------------------------------------------------------
283 // LEVEL 3 - Script > Misc > Hit Indication
284 //---------------------------------------------------------------
285 DiagMenu.RegisterBool(DiagMenuIDs.MISC_HIT_INDICATION_DEBUG, "", "Enable Debug", DiagMenuIDs.MISC_HIT_INDICATION_MENU);
286 DiagMenu.RegisterBool(DiagMenuIDs.MISC_HIT_INDICATION_SPAWN_HIT, "", "Spawn Hit", DiagMenuIDs.MISC_HIT_INDICATION_MENU);
287 DiagMenu.RegisterRange(DiagMenuIDs.MISC_HIT_INDICATION_SPAWN_HIT_DIRECTION, "", "Spawn Hit Direction", DiagMenuIDs.MISC_HIT_INDICATION_MENU, "0, 359, 0, 1");
288 DiagMenu.RegisterItem(DiagMenuIDs.MISC_HIT_INDICATION_MODE, "", "Mode", DiagMenuIDs.MISC_HIT_INDICATION_MENU, "Disabled,Static,Dynamic");
289 DiagMenu.SetValue(DiagMenuIDs.MISC_HIT_INDICATION_MODE, 1);
290 DiagMenu.RegisterItem(DiagMenuIDs.MISC_HIT_INDICATION_TYPE, "", "Type", DiagMenuIDs.MISC_HIT_INDICATION_MENU, "Splash,Spike,Arrow");
291 DiagMenu.RegisterRange(DiagMenuIDs.MISC_HIT_INDICATION_DURATION, "", "Hit Duration Max", DiagMenuIDs.MISC_HIT_INDICATION_MENU, "0.1, 5.0, 1.0, 0.1");
292 DiagMenu.RegisterRange(DiagMenuIDs.MISC_HIT_INDICATION_BREAKPOINT, "", "Hit Breakpoint", DiagMenuIDs.MISC_HIT_INDICATION_MENU, "0.0, 1.0, 0.8, 0.05");
293 DiagMenu.RegisterRange(DiagMenuIDs.MISC_HIT_INDICATION_DISTANCE, "", "Distance Adjust", DiagMenuIDs.MISC_HIT_INDICATION_MENU, "0.0, 1.0, 0.0, 0.01");
294 DiagMenu.RegisterRange(DiagMenuIDs.MISC_HIT_INDICATION_ROTATION, "", "Rotation Override", DiagMenuIDs.MISC_HIT_INDICATION_MENU, "0, 360, 0, 15");
295 DiagMenu.RegisterRange(DiagMenuIDs.MISC_HIT_INDICATION_SCATTER, "", "Direction Scatter", DiagMenuIDs.MISC_HIT_INDICATION_MENU, "0, 90, 0, 1");
296 DiagMenu.RegisterBool(DiagMenuIDs.MISC_HIT_INDICATION_DISABLE_PPE, "", "Disable Hit PPE", DiagMenuIDs.MISC_HIT_INDICATION_MENU);
297 }
298 //---------------------------------------------------------------
299 // LEVEL 2 - Script > Misc
300 //---------------------------------------------------------------
301 DiagMenu.RegisterBool(DiagMenuIDs.MISC_FREEZE_ENTITY, "lalt+x", "Freeze entity", DiagMenuIDs.MISC_MENU);
302 DiagMenu.RegisterBool(DiagMenuIDs.MISC_FREEZE_PLAYER, "lalt+e", "Freeze player", DiagMenuIDs.MISC_MENU);
303 DiagMenu.RegisterBool(DiagMenuIDs.MISC_CONNECTION_STATS, "lalt+4", "Show Connection Stats", DiagMenuIDs.MISC_MENU);
304 DiagMenu.RegisterBool(DiagMenuIDs.MISC_PLAYER_SYMPTOMS_SHOW, "", "Show States", DiagMenuIDs.MISC_MENU);
305 DiagMenu.RegisterRange(DiagMenuIDs.MISC_PLAYER_SYMPTOMS_TOGGLE_HMP, "", "Set HMP symptom", DiagMenuIDs.MISC_MENU, "-1, 1, -1, 1");
306 DiagMenu.RegisterBool(DiagMenuIDs.MISC_SHOW_PRA_ALL, "lalt+n", "Show PRA - ALL", DiagMenuIDs.MISC_MENU);
307 DiagMenu.RegisterBool(DiagMenuIDs.MISC_PRA_DETECT, "lalt+m", "PRA - detect", DiagMenuIDs.MISC_MENU);
308 DiagMenu.RegisterBool(DiagMenuIDs.MISC_INPUT_DEVICE_DISCONNECT_DBG, "", "InputDevice states", DiagMenuIDs.MISC_MENU);
309 DiagMenu.RegisterBool(DiagMenuIDs.MISC_DEBUG_MONITOR, "", "Debug Monitor", DiagMenuIDs.MISC_MENU);
310 DiagMenu.RegisterRange(DiagMenuIDs.MISC_FORCE_HINT_INDEX, "", "Force Hint Index", DiagMenuIDs.MISC_MENU, "-1, 512, -1, 1");
311 if (UiHintPanel.m_ForcedIndex != -1)
312 DiagMenu.SetRangeValue(DiagMenuIDs.MISC_FORCE_HINT_INDEX,UiHintPanel.m_ForcedIndex);
313 DiagMenu.RegisterBool(DiagMenuIDs.MISC_PLAYER_SURFACE_DEBUG, "", "Step surface debug", DiagMenuIDs.MISC_MENU);
314 DiagMenu.RegisterMenu(DiagMenuIDs.MISC_DUST_EFFECTS, "Dust Effects", DiagMenuIDs.MISC_MENU);
315 {
317 //---------------------------------------------------------------
318 // LEVEL 3 - Script > Misc > Dust Effects
319 //---------------------------------------------------------------
320 DiagMenu.RegisterBool(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_ENABLE, "", "Ground effect enable", DiagMenuIDs.MISC_DUST_EFFECTS);
321 DiagMenu.SetValue(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_ENABLE, DEManager.IsGroundEffectEnable());
322 DiagMenu.RegisterRange(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_THRESHOLD, "", "GE Min wind strength", DiagMenuIDs.MISC_DUST_EFFECTS, "0, 20, 0, 1");
323 DiagMenu.SetRangeValue(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_THRESHOLD, DEManager.GetGroundEffectThreshold());
324 DiagMenu.RegisterRange(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_INTESITY, "", "GE Frequency", DiagMenuIDs.MISC_DUST_EFFECTS, "1, 100, 1, 1");
325 DiagMenu.SetRangeValue(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_INTESITY, DEManager.GetGroundEffectIntensity());
326 DiagMenu.RegisterRange(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_RADIUS, "", "GE Distance (m)", DiagMenuIDs.MISC_DUST_EFFECTS, "10, 100, 10, 10");
327 DiagMenu.SetRangeValue(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_RADIUS, DEManager.GetGroundEffectRadius());
328 DiagMenu.RegisterRange(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_WINDWEIGHT, "", "GE Wind strenght to frequency", DiagMenuIDs.MISC_DUST_EFFECTS, "0, 1, 0, 0.1");
329 DiagMenu.SetRangeValue(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_WINDWEIGHT, DEManager.GetGroundEffectWindWeight());
330 DiagMenu.RegisterBool(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_GETFROMSURFACE, "", "GE Effect from surface", DiagMenuIDs.MISC_DUST_EFFECTS);
331 DiagMenu.SetValue(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_GETFROMSURFACE, DEManager.IsGroundEffectReadFromSurfaceEnable());
332 DiagMenu.RegisterRange(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_LIFETIME_MIN, "", "GE Lifetime min", DiagMenuIDs.MISC_DUST_EFFECTS, "0, 30, 0, 0.5");
333 DiagMenu.SetRangeValue(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_LIFETIME_MIN, DEManager.GetGroundEffectLifetimeMin());
334 DiagMenu.RegisterRange(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_LIFETIME_MAX, "", "GE Lifetime max", DiagMenuIDs.MISC_DUST_EFFECTS, "0, 30, 0, 0.5");
335 DiagMenu.SetRangeValue(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_LIFETIME_MAX, DEManager.GetGroundEffectLifetimeMax());
336 DiagMenu.RegisterRange(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_SIZE_MIN, "", "GE Size min", DiagMenuIDs.MISC_DUST_EFFECTS, "0, 50, 0, 0.5");
337 DiagMenu.SetRangeValue(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_SIZE_MIN, DEManager.GetGroundEffectSizeMin());
338 DiagMenu.RegisterRange(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_SIZE_MAX, "", "GE Size max", DiagMenuIDs.MISC_DUST_EFFECTS, "0, 50, 0, 0.5");
339 DiagMenu.SetRangeValue(DiagMenuIDs.MISC_DUST_EFFECTS_GROUND_SIZE_MAX, DEManager.GetGroundEffectSizeMax());
340
341
342 DiagMenu.RegisterBool(DiagMenuIDs.MISC_DUST_EFFECTS_CLOUD_ENABLE, "", "Cloud effect enable", DiagMenuIDs.MISC_DUST_EFFECTS);
343 DiagMenu.SetValue(DiagMenuIDs.MISC_DUST_EFFECTS_CLOUD_ENABLE, DEManager.IsCloudEffectEnable());
344 DiagMenu.RegisterRange(DiagMenuIDs.MISC_DUST_EFFECTS_CLOUD_THRESHOLD, "", "CE Min wind strength", DiagMenuIDs.MISC_DUST_EFFECTS, "0, 20, 0, 1");
345 DiagMenu.SetRangeValue(DiagMenuIDs.MISC_DUST_EFFECTS_CLOUD_THRESHOLD, DEManager.GetCloudEffectThreshold());
346 DiagMenu.RegisterRange(DiagMenuIDs.MISC_DUST_EFFECTS_CLOUD_COOLDOWN, "", "CE Cooldown (s)", DiagMenuIDs.MISC_DUST_EFFECTS, "0, 20, 0, 1");
347 DiagMenu.SetRangeValue(DiagMenuIDs.MISC_DUST_EFFECTS_CLOUD_COOLDOWN, DEManager.GetCloudEffectCooldownMin());
348 DiagMenu.RegisterRange(DiagMenuIDs.MISC_DUST_EFFECTS_CLOUD_DURATION, "", "CE Duration (s)", DiagMenuIDs.MISC_DUST_EFFECTS, "1, 10, 1, 1");
349 DiagMenu.SetRangeValue(DiagMenuIDs.MISC_DUST_EFFECTS_CLOUD_DURATION, DEManager.GetCloudEffectDurationMin());
350 DiagMenu.RegisterRange(DiagMenuIDs.MISC_DUST_EFFECTS_CLOUD_DISTANCE, "", "CE Distance(m)", DiagMenuIDs.MISC_DUST_EFFECTS, "4, 40, 4, 4");
351 DiagMenu.SetRangeValue(DiagMenuIDs.MISC_DUST_EFFECTS_CLOUD_DISTANCE, DEManager.GetCloudEffectDistance());
352 DiagMenu.RegisterBool(DiagMenuIDs.MISC_DUST_EFFECTS_CLOUD_GETFROMSURFACE, "", "CE Effect from surface", DiagMenuIDs.MISC_DUST_EFFECTS);
353 DiagMenu.SetValue(DiagMenuIDs.MISC_DUST_EFFECTS_CLOUD_GETFROMSURFACE, DEManager.IsCloudEffectReadFromSurfaceEnable());
354 }
355 }
356
357 //---------------------------------------------------------------
358 // LEVEL 1 - Script
359 //---------------------------------------------------------------
360 DiagMenu.RegisterMenu(DiagMenuIDs.SIMULATE_MENU, "Simulate script", DiagMenuIDs.SCRIPTS_MENU);
361 {
362 //---------------------------------------------------------------
363 // LEVEL 2 - Script > Simulate script
364 //---------------------------------------------------------------
365 DiagMenu.RegisterRange(DiagMenuIDs.SIMULATE_MODE, "", "Server/Client/Both", DiagMenuIDs.SIMULATE_MENU,"0,2,0,1");
366 DiagMenu.RegisterBool(DiagMenuIDs.SIMULATE_INFINITE_LOOP, "", "Simulate infinite loop", DiagMenuIDs.SIMULATE_MENU);
367 DiagMenu.RegisterBool(DiagMenuIDs.SIMULATE_NULL_POINTER, "", "Simulate null pointer", DiagMenuIDs.SIMULATE_MENU);
368 DiagMenu.RegisterBool(DiagMenuIDs.SIMULATE_DIVISION_BY_ZERO, "", "Simulate division by 0", DiagMenuIDs.SIMULATE_MENU);
369 DiagMenu.RegisterBool(DiagMenuIDs.SIMULATE_ERROR_FUNCTION, "", "Simulate Error() function", DiagMenuIDs.SIMULATE_MENU);
370 }
371
372 //---------------------------------------------------------------
373 // LEVEL 1 - Script
374 //---------------------------------------------------------------
375 DiagMenu.RegisterMenu(DiagMenuIDs.MELEE_MENU, "Melee", DiagMenuIDs.SCRIPTS_MENU);
376 {
377 //---------------------------------------------------------------
378 // LEVEL 2 - Script > Melee
379 //---------------------------------------------------------------
380 DiagMenu.RegisterBool(DiagMenuIDs.MELEE_DEBUG, "", "Enable Melee Debug", DiagMenuIDs.MELEE_MENU);
381 DiagMenu.RegisterBool(DiagMenuIDs.MELEE_CONTINUOUS, "", "Continuous update", DiagMenuIDs.MELEE_MENU);
382 DiagMenu.RegisterBool(DiagMenuIDs.MELEE_SHOW_TARGETS, "", "Show targets", DiagMenuIDs.MELEE_MENU);
383 DiagMenu.RegisterBool(DiagMenuIDs.MELEE_DRAW_TARGETS, "", "Draw targets", DiagMenuIDs.MELEE_MENU);
384 DiagMenu.RegisterBool(DiagMenuIDs.MELEE_DRAW_RANGE, "", "Draw range", DiagMenuIDs.MELEE_MENU);
385 DiagMenu.RegisterBool(DiagMenuIDs.MELEE_DRAW_BLOCK_RANGE_AI, "", "Draw block range PVE", DiagMenuIDs.MELEE_MENU);
386 DiagMenu.RegisterBool(DiagMenuIDs.MELEE_DRAW_BLOCK_RANGE_PVP, "", "Draw block range PVP", DiagMenuIDs.MELEE_MENU);
387 }
388
389 //---------------------------------------------------------------
390 // LEVEL 1 - Script
391 //---------------------------------------------------------------
392 DiagMenu.RegisterMenu(DiagMenuIDs.WEAPON_MENU, "Weapon", DiagMenuIDs.SCRIPTS_MENU);
393 {
394 //---------------------------------------------------------------
395 // LEVEL 2 - Script > Weapon
396 //---------------------------------------------------------------
397 DiagMenu.RegisterBool(DiagMenuIDs.WEAPON_PARTICLES, "", "Enable gun particles", DiagMenuIDs.WEAPON_MENU);
398 DiagMenu.SetValue(DiagMenuIDs.WEAPON_PARTICLES, true);
399 DiagMenu.RegisterBool(DiagMenuIDs.WEAPON_DEBUG, "", "Show Debug", DiagMenuIDs.WEAPON_MENU); // Doesn't do anything anymore currently
400 DiagMenu.SetValue(DiagMenuIDs.WEAPON_DEBUG, false);
401 DiagMenu.RegisterBool(DiagMenuIDs.WEAPON_AIM_NOISE, "", "Weapon Sway", DiagMenuIDs.WEAPON_MENU);
402 DiagMenu.SetValue(DiagMenuIDs.WEAPON_AIM_NOISE, true);
403 DiagMenu.RegisterBool(DiagMenuIDs.WEAPON_RECOIL, "", "Procedural Recoil", DiagMenuIDs.WEAPON_MENU);
404 DiagMenu.SetValue(DiagMenuIDs.WEAPON_RECOIL, true);
405 DiagMenu.RegisterBool(DiagMenuIDs.WEAPON_UNLIMITED_AMMO, "lalt+9", "Unlimited Ammo", DiagMenuIDs.WEAPON_MENU);
406 DiagMenu.RegisterItem(DiagMenuIDs.WEAPON_BURST_VERSION, "lctrl+0", "Burst Version", DiagMenuIDs.WEAPON_MENU, "Hold, Press");
407 DiagMenu.RegisterBool(DiagMenuIDs.WEAPON_CLAYMORE_DEBUG, "", "Claymore debugs", DiagMenuIDs.WEAPON_MENU);
408 DiagMenu.RegisterItem(DiagMenuIDs.WEAPON_LIFT_DEBUG, "", "Weapon Lift Debug", DiagMenuIDs.WEAPON_MENU, "false,true,extended");
409 DiagMenu.RegisterItem(DiagMenuIDs.WEAPON_FORCEALLOW_OBSTRUCTION, "", "Force Allow Obstruction", DiagMenuIDs.WEAPON_MENU, "off,conditional,always,alwaysDynamic,neverStatic,alwaysDynamicNeverStatic,neverEver");
410 DiagMenu.RegisterBool(DiagMenuIDs.WEAPON_DISABLE_OBSTRUCTION_INTERPOLATION, "", "Disable Obstruction Interpolation", DiagMenuIDs.WEAPON_MENU);
411 }
412
413 //---------------------------------------------------------------
414 // LEVEL 1 - Script
415 //---------------------------------------------------------------
416 DiagMenu.RegisterMenu(DiagMenuIDs.BLEEDING_MENU, "Bleeding", DiagMenuIDs.SCRIPTS_MENU);
417 {
418 //---------------------------------------------------------------
419 // LEVEL 2 - Script > Bleeding
420 //---------------------------------------------------------------
421 DiagMenu.RegisterBool(DiagMenuIDs.BLEEDING_SOURCES, "", "Show Bleeding Sources", DiagMenuIDs.BLEEDING_MENU);
422 DiagMenu.RegisterBool(DiagMenuIDs.BLEEDING_DISABLE_BLOOD_LOSS, "", "Disable Blood Loss", DiagMenuIDs.BLEEDING_MENU);
423 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDING_ACTIVATE_SOURCE, "", "Activate Source #", DiagMenuIDs.BLEEDING_MENU, "1, 32, 0, 1");
424 DiagMenu.RegisterBool(DiagMenuIDs.BLEEDING_ACTIVATE_ALL_SOURCES, "", "Activate All Sources", DiagMenuIDs.BLEEDING_MENU);
425 DiagMenu.RegisterItem(DiagMenuIDs.BLEEDING_ACTIVATE_SOURCE_LEVEL, "", "Activate Blsource Level", DiagMenuIDs.BLEEDING_MENU, "None, Low, Medium, High");
426 DiagMenu.RegisterBool(DiagMenuIDs.BLEEDING_RELOAD, "", "Client Reload", DiagMenuIDs.BLEEDING_MENU);
427 DiagMenu.RegisterMenu(DiagMenuIDs.BLEEDINGINDICATORS_MENU, "Bleeding Indication", DiagMenuIDs.BLEEDING_MENU);
428 {
429 //---------------------------------------------------------------
430 // LEVEL 3 - Script > Bleeding > Bleeding Indication
431 //---------------------------------------------------------------
432 DiagMenu.RegisterBool(DiagMenuIDs.BLEEDINGINDICATORS, "", "Enable BleedingIndicators", DiagMenuIDs.BLEEDINGINDICATORS_MENU);
433 DiagMenu.SetValue(DiagMenuIDs.BLEEDINGINDICATORS, true);
434 DiagMenu.RegisterBool(DiagMenuIDs.BLEEDINGINDICATORS_USEVALUEOVERRIDES, "", "Enable Debug Overrides", DiagMenuIDs.BLEEDINGINDICATORS_MENU);
435 DiagMenu.SetValue(DiagMenuIDs.BLEEDINGINDICATORS_USEVALUEOVERRIDES, false);
436 DiagMenu.RegisterBool(DiagMenuIDs.BLEEDINGINDICATORS_DROP_RANDOMROTATION, "", "Enable Random Rotation", DiagMenuIDs.BLEEDINGINDICATORS_MENU);
437 DiagMenu.SetValue(DiagMenuIDs.BLEEDINGINDICATORS_DROP_RANDOMROTATION, true);
438 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_SEQUENCE_DURATION, "", "Sequence Duration", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.2, 5.0, " + BleedingIndicationConstants.SEQUENCE_DURATION_DEFAULT.ToString() + ", 0.01");
439 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_BASEDURATION, "", "Drop Anim Duration", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.1, 5.0, " + BleedingIndicationConstants.DROP_DURATION_LOW.ToString() + ", 0.05");
440 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");
441 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");
442 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_PROGRESSTHRESHOLD, "", "Drop Progress Threshold", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.1, 1.0, " + BleedingIndicationConstants.DROP_PROGRESS_THRESHOLD.ToString() + ", 0.05");
443 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_STARTSIZE, "", "Drop Start Size", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.1, 1.0, " + BleedingIndicationConstants.DROP_SIZE_START_LOW.ToString() + ", 0.01");
444 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_ENDSIZE, "", "Drop End Size", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.1, 1.0, " + BleedingIndicationConstants.DROP_SIZE_END_LOW.ToString() + ", 0.01");
445 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");
446 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");
447 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_SCATTER, "", "Drop Scatter px", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.0, 500.0, " + BleedingIndicationConstants.DROP_SCATTER_LOW.ToString() + ", 1.0");
448 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_SLIDEDISTANCE, "", "Drop Slide Distance", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.0, 500.0, 0, 0.1");
449 DiagMenu.RegisterMenu(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU, "Color Debug", DiagMenuIDs.BLEEDINGINDICATORS_MENU);
450 {
451 //---------------------------------------------------------------
452 // LEVEL 4 - Script > Bleeding > Bleeding Indication > Color Debug
453 //---------------------------------------------------------------
454 DiagMenu.RegisterBool(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_ENABLEDESATURATION, "", "Desaturate", DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU);
455 DiagMenu.SetValue(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_ENABLEDESATURATION, true);
456 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");
457 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_R, "", "Red", DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU, "0.0, 255.0, " + BleedingIndicationConstants.DROP_COLOR_RED.ToString() + ", 1.0");
458 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_G, "", "Green", DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU, "0.0, 255.0, " + BleedingIndicationConstants.DROP_COLOR_GREEN.ToString() + ", 1.0");
459 DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_B, "", "Blue", DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU, "0.0, 255.0, " + BleedingIndicationConstants.DROP_COLOR_BLUE.ToString() + ", 1.0");
460 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");
461 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");
462 }
463 }
464 }
465
466 //---------------------------------------------------------------
467 // LEVEL 1 - Script
468 //---------------------------------------------------------------
469 DiagMenu.RegisterMenu(DiagMenuIDs.LOGS_MENU, "Logs", DiagMenuIDs.SCRIPTS_MENU);
470 {
471 //---------------------------------------------------------------
472 // LEVEL 2 - Script > Logs
473 //---------------------------------------------------------------
474 DiagMenu.RegisterBool(DiagMenuIDs.LOGS_ACTIONS, "", "Log Actions", DiagMenuIDs.LOGS_MENU);
475 DiagMenu.RegisterBool(DiagMenuIDs.LOGS_WEAPONS, "", "Log Weapons", DiagMenuIDs.LOGS_MENU);
476 DiagMenu.RegisterBool(DiagMenuIDs.LOGS_SYNC, "", "Log Sync", DiagMenuIDs.LOGS_MENU);
477 DiagMenu.RegisterBool(DiagMenuIDs.LOGS_BASEBUILDING, "", "Log Base building", DiagMenuIDs.LOGS_MENU);
478 DiagMenu.RegisterBool(DiagMenuIDs.LOGS_QUICKBAR, "", "Log Quickbar", DiagMenuIDs.LOGS_MENU);
479 DiagMenu.RegisterBool(DiagMenuIDs.LOGS_SYMPTOMS, "", "Log Symptoms", DiagMenuIDs.LOGS_MENU);
480 DiagMenu.RegisterMenu(DiagMenuIDs.LOGS_INVENTORY_MENU, "Inventory Logs", DiagMenuIDs.LOGS_MENU);
481 {
482 //---------------------------------------------------------------
483 // LEVEL 3 - Script > Logs > InventoryLogs
484 //---------------------------------------------------------------
485 DiagMenu.RegisterBool(DiagMenuIDs.LOGS_INVENTORY_MOVE, "", "Log Items move", DiagMenuIDs.LOGS_INVENTORY_MENU);
486 DiagMenu.RegisterBool(DiagMenuIDs.LOGS_INVENTORY_RESERVATION, "", "Log Reservations", DiagMenuIDs.LOGS_INVENTORY_MENU);
487 DiagMenu.RegisterBool(DiagMenuIDs.LOGS_INVENTORY_HFSM, "", "Log HandFSM", DiagMenuIDs.LOGS_INVENTORY_MENU);
488 }
489 DiagMenu.RegisterBool(DiagMenuIDs.LOGS_BLEEDING_CHANCES, "", "Bleeding Chances Logs", DiagMenuIDs.LOGS_MENU);
490 }
491
492 //---------------------------------------------------------------
493 // LEVEL 1 - Script
494 //---------------------------------------------------------------
495 DiagMenu.RegisterMenu(DiagMenuIDs.TRIGGER_MENU, "Triggers", DiagMenuIDs.SCRIPTS_MENU);
496 {
497 //---------------------------------------------------------------
498 // LEVEL 2 - Script > Triggers
499 //---------------------------------------------------------------
500 DiagMenu.RegisterBool(DiagMenuIDs.TRIGGER_DEBUG, "", "Show Triggers", DiagMenuIDs.TRIGGER_MENU);
501 DiagMenu.RegisterBool(DiagMenuIDs.TRIGGER_PLAYER_DEBUG, "", "Show Player Touch", DiagMenuIDs.TRIGGER_MENU);
502 #ifdef TRIGGER_DEBUG_BASIC
503 DiagMenu.SetValue(DiagMenuIDs.TRIGGER_DEBUG, true);
504 DiagMenu.SetValue(DiagMenuIDs.TRIGGER_PLAYER_DEBUG, true);
505 #endif
506 }
507
508 //---------------------------------------------------------------
509 // LEVEL 1 - Script
510 //---------------------------------------------------------------
511 DiagMenu.RegisterMenu(DiagMenuIDs.BASEBUILDING_MENU, "Base Building", DiagMenuIDs.SCRIPTS_MENU);
512 {
513 //---------------------------------------------------------------
514 // LEVEL 2 - Script > Base Building
515 //---------------------------------------------------------------
516 DiagMenu.RegisterBool(DiagMenuIDs.BASEBUILDING_WOOD, "", "Spawn uses wood/metal", DiagMenuIDs.BASEBUILDING_MENU);
517 DiagMenu.RegisterBool(DiagMenuIDs.BASEBUILDING_GATE, "", "Spawn Fence makes gate", DiagMenuIDs.BASEBUILDING_MENU);
518 DiagMenu.RegisterItem(DiagMenuIDs.BASEBUILDING_FASTBUILD, "lalt+b", "Fast&Free building", DiagMenuIDs.BASEBUILDING_MENU, "Disabled,Fast,Instant");
519 DiagMenu.SetValue(DiagMenuIDs.BASEBUILDING_FASTBUILD, EConstructionDebugModes.DISABLED);
520 DiagMenu.RegisterBool(DiagMenuIDs.BASEBUILDING_COLLISIONDEBUG, "", "Collision debug", DiagMenuIDs.BASEBUILDING_MENU);
521 DiagMenu.RegisterBool(DiagMenuIDs.BASEBUILDING_FULLDEBUG, "lalt+h", "Full debug", DiagMenuIDs.BASEBUILDING_MENU);
522 }
523
524 //---------------------------------------------------------------
525 // LEVEL 1 - Script
526 //---------------------------------------------------------------
527 DiagMenu.RegisterMenu(DiagMenuIDs.UNDERGROUND_MENU, "Underground Areas", DiagMenuIDs.SCRIPTS_MENU);
528 {
529 //---------------------------------------------------------------
530 // LEVEL 2 - Script > Underground Areas
531 //---------------------------------------------------------------
532 DiagMenu.RegisterBool(DiagMenuIDs.UNDERGROUND_SHOW_BREADCRUMB, "", "Show Breadcrumbs", DiagMenuIDs.UNDERGROUND_MENU);
533 DiagMenu.RegisterBool(DiagMenuIDs.UNDERGROUND_DISABLE_DARKENING, "lctrl+f", "Disable Darkening", DiagMenuIDs.UNDERGROUND_MENU);
534 }
535
536 //---------------------------------------------------------------
537 // LEVEL 1 - Script
538 //---------------------------------------------------------------
539 DiagMenu.RegisterMenu(DiagMenuIDs.FINISHERS_MENU, "Finishers", DiagMenuIDs.SCRIPTS_MENU);
540 {
541 //---------------------------------------------------------------
542 // LEVEL 2 - Script > Finishers
543 //---------------------------------------------------------------
544 DiagMenu.RegisterItem(DiagMenuIDs.FINISHERS_FINISHER_FORCED, "", "Forced Finisher: ", DiagMenuIDs.FINISHERS_MENU, "None,Liver,Neck");
545 }
546
547 //---------------------------------------------------------------
548 // LEVEL 1 - Script
549 //---------------------------------------------------------------
550 DiagMenu.RegisterMenu(DiagMenuIDs.SOUNDS_MENU, "Script Sounds", DiagMenuIDs.SCRIPTS_MENU);
551 {
552 //---------------------------------------------------------------
553 // LEVEL 2 - Script > Script Sounds
554 //---------------------------------------------------------------
555 DiagMenu.RegisterBool(DiagMenuIDs.SOUNDS_ITEM_IMPACT_SOUNDS, "", "Item impact sounds", DiagMenuIDs.SOUNDS_MENU);
556 DiagMenu.RegisterBool(DiagMenuIDs.SOUNDS_DYNAMIC_MUSIC_PLAYER_STATS, "", "Dynamic Music Player stats", DiagMenuIDs.SOUNDS_MENU);
557 }
558
559 //---------------------------------------------------------------
560 // LEVEL 1 - Script
561 //---------------------------------------------------------------
562 DiagMenu.RegisterMenu(DiagMenuIDs.CAMERATOOLS_MENU, "Cinematic Camera Tools", DiagMenuIDs.SCRIPTS_MENU);
563 {
564 //---------------------------------------------------------------
565 // LEVEL 2 - Script > Cinematic Camera Tools
566 //---------------------------------------------------------------
567 DiagMenu.RegisterBool(DiagMenuIDs.CAMERATOOLS_ENABLE_REMOTE_CAMERA, "", "Show remote camera", DiagMenuIDs.CAMERATOOLS_MENU);
568 DiagMenu.RegisterBool(DiagMenuIDs.CAMERATOOLS_ENABLE_REMOTE_CAMERA_BROADCAST, "", "Broadcast camera", DiagMenuIDs.CAMERATOOLS_MENU);
569 }
570 //---------------------------------------------------------------
571 // LEVEL 1 - Script
572 //---------------------------------------------------------------
573 DiagMenu.RegisterMenu(DiagMenuIDs.FEATURE_TIME_ACCEL_MENU, "Time Accel", DiagMenuIDs.SCRIPTS_MENU);
574 {
575 //---------------------------------------------------------------
576 // LEVEL 2 - Script > Time Accel
577 //---------------------------------------------------------------
578 DiagMenu.RegisterBool(DiagMenuIDs.FEATURE_TIME_ACCEL, "lalt+0", "Apply Time Accel", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU);
579 DiagMenu.RegisterRange(DiagMenuIDs.FEATURE_TIME_ACCEL_VALUE1, "", "Accel Factor Big", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU,"0,100,1,1");
580 DiagMenu.RegisterRange(DiagMenuIDs.FEATURE_TIME_ACCEL_VALUE2, "", "Accel Factor Small", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU,"0,0.95 ,0,0.05");
581 DiagMenu.RegisterBool(DiagMenuIDs.FEATURE_TIME_ACCEL_UG_ENTRANCES, "", "Underground Entrances", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU);
582 DiagMenu.RegisterBool(DiagMenuIDs.FEATURE_TIME_ACCEL_UG_RESERVOIR, "", "Underground Reservoir", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU);
583 DiagMenu.RegisterBool(DiagMenuIDs.FEATURE_TIME_ACCEL_ENERGY_CONSUME, "", "Energy Consumption", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU);
584 DiagMenu.RegisterBool(DiagMenuIDs.FEATURE_TIME_ACCEL_ENERGY_RECHARGE, "", "Energy Recharge", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU);
585 DiagMenu.RegisterBool(DiagMenuIDs.FEATURE_TIME_ACCEL_FOOD_DECAY, "", "Decay", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU);
586 DiagMenu.RegisterBool(DiagMenuIDs.FEATURE_TIME_ACCEL_DYNAMIC_MUSIC_PLAYER, "", "Dynamic Music Player", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU);
587 }
588
589 //---------------------------------------------------------------
590 // LEVEL 1 - Script
591 //---------------------------------------------------------------
592 DiagMenu.RegisterMenu(DiagMenuIDs.MATERIALDIAG_MENU, "Materials Diag", DiagMenuIDs.SCRIPTS_MENU);
593 {
594 //---------------------------------------------------------------
595 // LEVEL 2 - Script > Material Diag
596 //---------------------------------------------------------------
597 DiagMenu.RegisterBool(DiagMenuIDs.MATERIALDIAG_GHOSTPP, "", "Ghost PP", DiagMenuIDs.MATERIALDIAG_MENU);
598 }
599
600 //---------------------------------------------------------------
601 // LEVEL 1 - Script
602 //---------------------------------------------------------------
603 DiagMenu.RegisterMenu(DiagMenuIDs.GEYSERDIAG_MENU, "Geyser Diag", DiagMenuIDs.SCRIPTS_MENU);
604 {
605 //---------------------------------------------------------------
606 // LEVEL 2 - Script > Geyser Diag
607 //---------------------------------------------------------------
608 DiagMenu.RegisterBool(DiagMenuIDs.GEYSERDIAG_ENABLE, "lalt+g", "Enable Geyser Diag", DiagMenuIDs.GEYSERDIAG_MENU);
609 DiagMenu.RegisterRange(DiagMenuIDs.GEYSERDIAG_STATE_INTERVAL, "", "State Interval (s)", DiagMenuIDs.GEYSERDIAG_MENU,"0.0, 120.0, 10.0, 1.0");
610 DiagMenu.RegisterRange(DiagMenuIDs.GEYSERDIAG_STATE_DURATION, "", "State Duration (s)", DiagMenuIDs.GEYSERDIAG_MENU,"0.0, 120.0, 10.0, 1.0");
611 }
612
613 //---------------------------------------------------------------
614 // LEVEL 1 - Script
615 //---------------------------------------------------------------
616 DiagMenu.RegisterMenu(DiagMenuIDs.RADIOGAMEPLAY_MENU, "Radio Gameplay", DiagMenuIDs.SCRIPTS_MENU);
617 {
618 //---------------------------------------------------------------
619 // LEVEL 2 - Script > Radio Gameplay
620 //---------------------------------------------------------------
621 DiagMenu.RegisterBool(DiagMenuIDs.RADIOGAMEPLAY_LOGGING, "", "Logging", DiagMenuIDs.RADIOGAMEPLAY_MENU);
622 DiagMenu.RegisterBool(DiagMenuIDs.RADIOGAMEPLAY_DEBUG, "", "Debug", DiagMenuIDs.RADIOGAMEPLAY_MENU);
623 }
624
625 //---------------------------------------------------------------
626 // LEVEL 1 - Script
627 //---------------------------------------------------------------
628 DiagMenu.RegisterMenu(DiagMenuIDs.ROBOCLIENTS_MENU, "Roboclients", DiagMenuIDs.SCRIPTS_MENU);
629 {
630 //---------------------------------------------------------------
631 // LEVEL 2 - Script > Roboclients
632 //---------------------------------------------------------------
633 DiagMenu.RegisterBool(DiagMenuIDs.ROBOCLIENTS_ACTIVE, "", "Active", DiagMenuIDs.ROBOCLIENTS_MENU);
634 DiagMenu.RegisterBool(DiagMenuIDs.ROBOCLIENTS_RESTART, "", "Restart", DiagMenuIDs.ROBOCLIENTS_MENU);
635
636 DiagMenu.SetValue(DiagMenuIDs.ROBOCLIENTS_ACTIVE, true);
637 }
638
639 //---------------------------------------------------------------
640 // LEVEL 1 - Script
641 //---------------------------------------------------------------
642 DiagMenu.RegisterMenu(DiagMenuIDs.SERVER_BROWSER_MENU, "Server Browser", DiagMenuIDs.SCRIPTS_MENU);
643 {
644 //---------------------------------------------------------------
645 // LEVEL 2 - Script > Server Browser
646 //---------------------------------------------------------------
647 DiagMenu.RegisterBool(DiagMenuIDs.SERVER_BROWSER_DUMMY_SERVERS, "", "Enable Dummy Servers", DiagMenuIDs.SERVER_BROWSER_MENU);
648 }
649
650 //---------------------------------------------------------------
651 // LEVEL 1 - Script
652 //---------------------------------------------------------------
653 DiagMenu.RegisterMenu(DiagMenuIDs.FISHING_MENU, "Fishing", DiagMenuIDs.SCRIPTS_MENU);
654 {
655 //---------------------------------------------------------------
656 // LEVEL 2 - Script > Fishing
657 //---------------------------------------------------------------
658 DiagMenu.RegisterBool(DiagMenuIDs.SYNTHETIC_FISHING_CURSOR, "", "Synthetic fishing cursor", DiagMenuIDs.FISHING_MENU);
659 }
660 }
661 }
662
663 //---------------------------------------------
664 protected int GetModdedDiagID()
665 {
666 return ++m_ModdedDiagID;
667 }
668
669 //---------------------------------------------
670 protected int GetModdedRootMenu()
671 {
672 return DiagMenuIDs.MODDED_MENU;
673 }
674
675 //---------------------------------------------
676 protected void RegisterModdedDiagsIDs();
677
678 //---------------------------------------------
679 protected void RegisterModdedDiags()
680 {
681 DiagMenu.RegisterMenu(DiagMenuIDs.MODDED_MENU, "Script - Modded", -1);
682 }
683
684 //---------------------------------------------
685 void OnRPC(PlayerBase player, int rpc_type, ParamsReadContext ctx)
686 {
687 EntityAI parent;
688 PluginInventoryDebug pluginInventoryDebug;
689 Class.CastTo(parent, player.GetParent());
690
691 switch (rpc_type)
692 {
693 //---------------------------------------------------------------
694 // Misc, multipurpose
695 //---------------------------------------------------------------
696 case ERPCs.DIAG_ITEM_DEBUG_ACTIONS:
697 {
699 ItemBase.SetDebugActionsMask(CachedObjectsParams.PARAM1_INT.param1);
700 break;
701 }
702
703 //---------------------------------------------------------------
704 // LEVEL 2 - Script > Inventory
705 //---------------------------------------------------------------
706 case ERPCs.DIAG_INVENTORY_ACK_HANDS:
707 {
709 {
710 pluginInventoryDebug = PluginInventoryDebug.Cast(GetPlugin(PluginInventoryDebug));
711 pluginInventoryDebug.SetHandAckEnable(CachedObjectsParams.PARAM1_BOOL.param1);
712 }
713 break;
714 }
715
716 case ERPCs.DIAG_INVENTORY_REPAIR_DESYNC:
717 {
719 {
720 pluginInventoryDebug = PluginInventoryDebug.Cast(GetPlugin(PluginInventoryDebug));
721 pluginInventoryDebug.SetDesyncRepairEnable(CachedObjectsParams.PARAM1_BOOL.param1);
722 }
723 break;
724 }
725
726 //---------------------------------------------------------------
727 // LEVEL 2 - Script > Player States
728 //---------------------------------------------------------------
729 case ERPCs.DIAG_PLAYER_SYMPTOMS_DEBUG_ON:
730 case ERPCs.DIAG_PLAYER_SYMPTOMS_DEBUG_OFF:
731 case ERPCs.DIAG_PLAYER_SYMPTOMS_DEBUG:
732 {
733 if (player.GetSymptomManager())
734 {
735 player.GetSymptomManager().OnRPCDebug(rpc_type, ctx);
736 }
737 break;
738 }
739
740
741
742 //---------------------------------------------------------------
743 // LEVEL 2 - Script > Crafting
744 //---------------------------------------------------------------
745 case ERPCs.DIAG_CRAFTING_INSTANT:
746 {
748 {
749 PluginRecipesManager pluginRecipesManager = PluginRecipesManager.Cast(GetPlugin(PluginRecipesManager));
750 pluginRecipesManager.SetEnableDebugCrafting(CachedObjectsParams.PARAM1_INT.param1);
751 }
752 break;
753 }
754
755
756 //---------------------------------------------------------------
757 // LEVEL 2 - Script > Cheats
758 //---------------------------------------------------------------
759 case ERPCs.DIAG_CHEATS_MODIFIERS:
760 {
762 player.SetModifiers(CachedObjectsParams.PARAM1_INT.param1);
763 break;
764 }
765
766 //---------------------------------------------------------------
767 case ERPCs.DIAG_CHEATS_KILL_PLAYER:
768 {
769 player.SetHealth("","", -1);
770 break;
771 }
772
773 //---------------------------------------------------------------
774 case ERPCs.DIAG_CHEATS_INVINCIBILITY:
775 {
777 {
778 switch (CachedObjectsParams.PARAM1_INT.param1)
779 {
780 case 0:
781 {
782 if (parent)
783 {
784 parent.SetAllowDamage(true);
785 parent.SetCanBeDestroyed(true);
786 }
787
788 player.SetAllowDamage(true);
789 player.SetCanBeDestroyed(true);
790 break;
791 }
792 case 1:
793 {
794 if (parent)
795 {
796 parent.SetAllowDamage(true);
797 parent.SetCanBeDestroyed(false);
798 }
799
800 player.SetAllowDamage(true);
801 player.SetCanBeDestroyed(false);
802 break;
803 }
804 case 2:
805 {
806 if (parent)
807 {
808 parent.SetAllowDamage(false);
809 }
810
811 player.SetAllowDamage(false);
812 break;
813 }
814 }
815 break;
816 }
817 }
818
819 //---------------------------------------------------------------
820 case ERPCs.DIAG_CHEATS_DISABLE_STAMINA:
821 {
823 player.SetStaminaDisabled(CachedObjectsParams.PARAM1_BOOL.param1);
824 break;
825 }
826
827 //---------------------------------------------------------------
828 case ERPCs.DIAG_CHEATS_RESET_PLAYER:
829 {
830 player.ResetPlayer(false);
831 break;
832 }
833
834 //---------------------------------------------------------------
835 case ERPCs.DIAG_CHEATS_RESET_PLAYER_MAX:
836 {
837 player.ResetPlayer(true);
838 break;
839 }
840
841 //---------------------------------------------------------------
842 case ERPCs.DIAG_CHEATS_INVENTORY_ACCESS:
843 {
845 player.DEBUG_INVENTORY_ACCESS = CachedObjectsParams.PARAM1_INT.param1;
846 break;
847 }
848
849 //---------------------------------------------------------------
850 case ERPCs.DIAG_CHEATS_ITEMS_FIX:
851 {
852 player.FixAllInventoryItems();
853 break;
854 }
855 //---------------------------------------------------------------
856 //---------------------------DAMAGE DEBUG------------------------
857 // hardcoded for Heavy and Light, but Light can be converted to some sort of setup if we need to have even more times with more settings, ie. we could first set-up the hit params and then perform it
858 case ERPCs.DIAG_CHEATS_CREATE_HIT:
859 {
860 player.ProcessDirectDamage(DamageType.CUSTOM, player, "", "Dummy_Heavy", "0 0 0");
861 break;
862 }
863
864 case ERPCs.DIAG_CHEATS_CREATE_HIT_LIGHT:
865 {
866 player.ProcessDirectDamage(DamageType.CUSTOM, player, "", "MeleeFist", "0 0 0");
867 break;
868 }
869
870 //---------------------------------------------------------------
871 // LEVEL 2 - Script > Soft Skills
872 //---------------------------------------------------------------
873 case ERPCs.DIAG_SOFT_SKILLS_SHOW_DEBUG:
874 {
876 {
878 {
879 player.GetSoftSkillsManager().StartSynchTimer();
880 }
881 else
882 {
883 player.GetSoftSkillsManager().StopSynchTimer();
884 player.GetSoftSkillsManager().ResetDebugWindow();
885 }
886 }
887 break;
888 }
889
890 //---------------------------------------------------------------
891 case ERPCs.DIAG_SOFT_SKILLS_TOGGLE_STATE:
892 {
894 player.GetSoftSkillsManager().SetSoftSkillsState(CachedObjectsParams.PARAM1_BOOL.param1);
895 break;
896 }
897
898 //---------------------------------------------------------------
899 case ERPCs.DIAG_SOFT_SKILLS_TOGGLE_MODEL:
900 {
902 player.GetSoftSkillsManager().SetLinearState(CachedObjectsParams.PARAM1_BOOL.param1) ;
903 break;
904 }
905
906 //---------------------------------------------------------------
907 case ERPCs.DIAG_SOFT_SKILLS_SPECIALTY_VALUE:
908 {
910 {
911 SoftSkillsManager softSkillsMngr = player.GetSoftSkillsManager();
913 softSkillsMngr.SynchSpecialtyLevel();
914 player.GetStatSpecialty().Set(CachedObjectsParams.PARAM1_FLOAT.param1);
915 }
916 break;
917 }
918
919 //---------------------------------------------------------------
920 // LEVEL 2 - Script > Lifespan
921 //---------------------------------------------------------------
922 case ERPCs.DIAG_LIFESPAN_BLOODY_HANDS:
923 {
925 {
927 pluginLifespan.UpdateBloodyHandsVisibility(player, CachedObjectsParams.PARAM1_BOOL.param1);
928 player.SetBloodyHandsPenaltyChancePerAgent(eAgents.SALMONELLA, 0.75);
929 }
930 else
931 player.ClearBloodyHandsPenaltyChancePerAgent(eAgents.SALMONELLA);
932
933 break;
934 }
935
936 //---------------------------------------------------------------
937 case ERPCs.DIAG_LIFESPAN_PLAYTIME_UPDATE:
938 {
940 {
941 //reset playtime
942 player.StatUpdate(AnalyticsManagerServer.STAT_PLAYTIME, player.StatGet(AnalyticsManagerServer.STAT_PLAYTIME) * -1);
943 //set new playtime
945 player.SetLastShavedSeconds(0);
946 //update lifespan
947 PluginLifespan pluginLifespann = PluginLifespan.Cast(GetPlugin(PluginLifespan));
948 pluginLifespann.ChangeFakePlaytime( player, CachedObjectsParams.PARAM1_FLOAT.param1 );
949 pluginLifespann.UpdateLifespan(player, true);
950 }
951 break;
952 }
953
954
955 //---------------------------------------------------------------
956 // LEVEL 2 - Script > Misc
957 //---------------------------------------------------------------
958 case ERPCs.DIAG_MISC_LOG_PLAYER_STATS:
959 {
961 player.GetPlayerStats().SetAllowLogs(CachedObjectsParams.PARAM1_BOOL.param1);
962 break;
963 }
964
965 //---------------------------------------------------------------
966
967 //---------------------------------------------------------------
968 // LEVEL 2 - Script > Misc -> Environment
969 //---------------------------------------------------------------
970 case ERPCs.DIAG_MISC_ENVIRONMENT_DEBUG:
971 {
973 {
974 if (player.m_Environment)
975 player.m_Environment.m_Debug = CachedObjectsParams.PARAM1_BOOL.param1;
976 }
977 break;
978 }
979
980 #ifdef ENABLE_LOGGING
981 case ERPCs.DIAG_MISC_ENVIRONMENT_LOGGING_DRYWET:
982 {
984 {
985 if (player.m_Environment)
986 player.m_Environment.m_DebugLogDryWet = CachedObjectsParams.PARAM1_BOOL.param1;
987 }
988 break;
989 }
990
991 case ERPCs.DIAG_MISC_ENVIRONMENT_LOGGING_ITEMHEAT:
992 {
994 {
995 if (player.m_Environment)
996 player.m_Environment.m_DebugLogItemHeat = CachedObjectsParams.PARAM1_BOOL.param1;
997 }
998 break;
999 }
1000
1001 case ERPCs.DIAG_RADIO_GAMEPLAY_LOGGING:
1002 {
1004 {
1006 if (handler)
1007 handler.m_LoggingEnabled = CachedObjectsParams.PARAM1_BOOL.param1;
1008 }
1009 break;
1010 }
1011 #endif
1012
1013 //---------------------------------------------------------------
1014 // LEVEL 2 - Script > Misc
1015 //---------------------------------------------------------------
1016 case ERPCs.DIAG_MISC_FALLDAMAGE_DEBUG:
1017 {
1019 {
1020 if (player.GetFallDamage())
1021 player.GetFallDamage().m_Debug = CachedObjectsParams.PARAM1_BOOL.param1;
1022 }
1023 break;
1024 }
1025
1026 //---------------------------------------------------------------
1027 case ERPCs.DIAG_MISC_GO_UNCONSCIOUS:
1028 {
1029 GoUnconscious(player);
1030 break;
1031 }
1032
1033 //---------------------------------------------------------------
1034 case ERPCs.DIAG_MISC_GO_UNCONSCIOUS_DELAYED:
1035 {
1036 g_Game.GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(GoUnconscious, 10000, false, player);
1037 break;
1038 }
1039
1040 //---------------------------------------------------------------
1041 case ERPCs.DIAG_MISC_QUICK_RESTRAIN:
1042 {
1044 player.SetQuickRestrain(CachedObjectsParams.PARAM1_BOOL.param1);
1045 break;
1046 }
1047
1048 //---------------------------------------------------------------
1049 // LEVEL 3 - Script > Misc > Hair Hiding
1050 //---------------------------------------------------------------
1051 case ERPCs.DIAG_MISC_HAIR_LEVEL_HIDE:
1052 {
1054 {
1055 player.SetHairLevelToHide(CachedObjectsParams.PARAM2_INT_INT.param1, CachedObjectsParams.PARAM2_INT_INT.param2, true);
1056 player.UpdateHairSelectionVisibility(true);
1057 }
1058 break;
1059 }
1060
1061 //---------------------------------------------------------------
1062 // LEVEL 2 - Script > Misc
1063 //---------------------------------------------------------------
1064 case ERPCs.DIAG_MISC_QUICK_FISHING:
1065 {
1067 player.SetQuickFishing(CachedObjectsParams.PARAM1_BOOL.param1);
1068 break;
1069 }
1070
1071 //---------------------------------------------------------------
1072 case ERPCs.DIAG_MISC_TARGETABLE_BY_AI:
1073 {
1075 player.m_CanBeTargetedDebug = CachedObjectsParams.PARAM1_BOOL.param1;
1076 break;
1077 }
1078
1079 //---------------------------------------------------------------
1080 case ERPCs.DIAG_MISC_DEBUG_MONITOR:
1081 {
1083 g_Game.SetDebugMonitorEnabled(CachedObjectsParams.PARAM1_BOOL.param1);
1084 break;
1085 }
1086
1087 //---------------------------------------------------------------
1088 // LEVEL 2 - Script > Simulate script
1089 //---------------------------------------------------------------
1090 case ERPCs.DIAG_SIMULATE_INFINITE_LOOP:
1091 {
1092 while ( true )
1093 {
1094 Print("simulating infinite loop");
1095 }
1096 break;
1097 }
1098
1099 //---------------------------------------------------------------
1100 case ERPCs.DIAG_SIMULATE_NULL_POINTER:
1101 {
1102 PlayerBase NULL_player = null;
1103 NULL_player.SetHealth("","", -1);
1104 break;
1105 }
1106
1107 //---------------------------------------------------------------
1108 case ERPCs.DIAG_SIMULATE_DIVISION_BY_ZERO:
1109 {
1110 int zero = 0;
1111 int division_by_zero = 1/zero;
1112 break;
1113 }
1114
1115 //---------------------------------------------------------------
1116 case ERPCs.DIAG_SIMULATE_ERROR_FUNCTION:
1117 {
1118 ErrorEx("Simulated error");
1119 break;
1120 }
1121
1122
1123 //---------------------------------------------------------------
1124 // LEVEL 2 - Script > Weapon
1125 //---------------------------------------------------------------
1126 case ERPCs.DIAG_WEAPON_PARTICLES:
1127 {
1130 break;
1131 }
1132
1133 //---------------------------------------------------------------
1134 case ERPCs.DIAG_WEAPON_RECOIL:
1135 {
1137 player.GetAimingModel().SetProceduralRecoilEnabled(CachedObjectsParams.PARAM1_BOOL.param1);
1138 break;
1139 }
1140
1141 //---------------------------------------------------------------
1142 case ERPCs.DIAG_WEAPON_BURST_VERSION:
1143 {
1145 player.GetWeaponManager().SetBurstOption(CachedObjectsParams.PARAM1_INT.param1);
1146 break;
1147 }
1148
1149
1150 //---------------------------------------------------------------
1151 // LEVEL 2 - Script > Bleeding
1152 //---------------------------------------------------------------
1153 case ERPCs.DIAG_BLEEDING_DISABLE_BLOOD_LOSS:
1154 {
1156 player.GetBleedingManagerServer().SetBloodLoss(CachedObjectsParams.PARAM1_BOOL.param1);
1157 break;
1158 }
1159
1160 //---------------------------------------------------------------
1161 case ERPCs.DIAG_BLEEDING_ACTIVATE_SOURCE:
1162 {
1164 player.GetBleedingManagerServer().DebugActivateBleedingSource(CachedObjectsParams.PARAM1_INT.param1);
1165 break;
1166 }
1167
1168 //---------------------------------------------------------------
1169 case ERPCs.DIAG_BLEEDING_ACTIVATE_ALL_SOURCES:
1170 {
1171 player.GetBleedingManagerServer().ActivateAllBS();
1172 break;
1173 }
1174
1175
1176 //---------------------------------------------------------------
1177 // LEVEL 2 - Script > Logs
1178 //---------------------------------------------------------------
1179 case ERPCs.DIAG_LOGS_ACTIONS:
1180 {
1183 break;
1184 }
1185
1186 //---------------------------------------------------------------
1187 case ERPCs.DIAG_LOGS_WEAPONS:
1188 {
1191 break;
1192 }
1193
1194 //---------------------------------------------------------------
1195 case ERPCs.DIAG_LOGS_SYNC:
1196 {
1199 break;
1200 }
1201
1202 //---------------------------------------------------------------
1203 case ERPCs.DIAG_LOGS_BASEBUILDING:
1204 {
1207 break;
1208 }
1209
1210 //---------------------------------------------------------------
1211 case ERPCs.DIAG_LOGS_SYMPTOMS:
1212 {
1215 break;
1216 }
1217
1218 //---------------------------------------------------------------
1219 case ERPCs.DIAG_LOGS_INVENTORY_MOVE:
1220 {
1223 break;
1224 }
1225
1226 //---------------------------------------------------------------
1227 case ERPCs.DIAG_LOGS_INVENTORY_RESERVATION:
1228 {
1231 break;
1232 }
1233
1234 //---------------------------------------------------------------
1235 case ERPCs.DIAG_LOGS_INVENTORY_HFSM:
1236 {
1239 break;
1240 }
1241
1242 //---------------------------------------------------------------
1243 case ERPCs.DIAG_LOGS_QUICKBAR:
1244 {
1247 break;
1248 }
1249
1250 //---------------------------------------------------------------
1251 case ERPCs.DIAG_LOGS_BLEEDING_CHANCES:
1252 {
1255 break;
1256 }
1257
1258 //---------------------------------------------------------------
1259 // LEVEL 2 - Script > Base Building
1260 //---------------------------------------------------------------
1261 case ERPCs.DIAG_BASEBUILDING_WOOD:
1262 {
1264 DiagMenu.SetValue(DiagMenuIDs.BASEBUILDING_WOOD, CachedObjectsParams.PARAM1_BOOL.param1);
1265 break;
1266 }
1267
1268 //---------------------------------------------------------------
1269 case ERPCs.DIAG_BASEBUILDING_GATE:
1270 {
1272 DiagMenu.SetValue(DiagMenuIDs.BASEBUILDING_GATE, CachedObjectsParams.PARAM1_BOOL.param1);
1273 break;
1274 }
1275
1276 case ERPCs.DIAG_BASEBUILDING_FASTBUILD:
1277 {
1279 player.GetConstructionActionData().SetFastConstructionMode(CachedObjectsParams.PARAM1_INT.param1);
1280 break;
1281 }
1282
1283 //---------------------------------------------------------------
1284 // LEVEL 2 - Script > Finishers
1285 //---------------------------------------------------------------
1286 case ERPCs.DIAG_FINISHERS_FORCE_FINISHER:
1287 {
1289 player.GetMeleeCombat().DebugSetForcedFinisherType(CachedObjectsParams.PARAM1_INT.param1);
1290 break;
1291 }
1292
1293
1294 //---------------------------------------------------------------
1295 // LEVEL 2 - Script > Cinematic Camera Tools
1296 //---------------------------------------------------------------
1297 case ERPCs.DIAG_CAMERATOOLS_CAM_DATA:
1298 {
1299 if (!player.m_CameraToolsMenuClient)
1300 {
1301 player.m_CameraToolsMenuClient = new CameraToolsMenuClient();
1302 }
1303
1304 player.m_CameraToolsMenuClient.OnRPC(ctx);
1305 break;
1306 }
1307
1308
1309 //---------------------------------------------------------------
1310 // LEVEL 2 - Script > Time Accel
1311 //---------------------------------------------------------------
1312 case ERPCs.DIAG_TIMEACCEL:
1313 {
1314 TimeAccelParam tap = new TimeAccelParam(false, 0, 0);
1315
1316 if (ctx.Read(tap))
1317 {
1318 FeatureTimeAccel.m_CurrentTimeAccel = tap;
1319 //Print("received from " + player);
1320 array<Man> players = new array<Man>();
1321 g_Game.GetPlayers(players);
1322 foreach (Man p : players)
1323 {
1324 if (p != player)// send to everyone except the one we receieved from
1325 {
1326 //Print("sending to " + p);
1327 g_Game.RPCSingleParam( p, ERPCs.DIAG_TIMEACCEL_CLIENT_SYNC, tap, true, p.GetIdentity());
1328 }
1329 }
1330
1331 /*
1332 Print(" -------- TimeAccelParam -------");
1333 Print(tap.param1);
1334 Print(tap.param2);
1335 Print(tap.param3);
1336 Print(" -------------------------------");
1337 Print(FeatureTimeAccel.GetFeatureTimeAccelEnabled(ETimeAccelCategories.UNDERGROUND_ENTRANCE));
1338 Print(FeatureTimeAccel.GetFeatureTimeAccelValue());
1339 Print(" ===============================");
1340 */
1341 }
1342 break;
1343 }
1344
1345 //---------------------------------------------------------------
1346 case ERPCs.DIAG_TIMEACCEL_CLIENT_SYNC:
1347 {
1348 TimeAccelParam tap2 = new TimeAccelParam(false, 0, 0);
1349
1350 if (ctx.Read(tap2))
1351 {
1352 int bigFactor = tap2.param2;
1353 float smallFactor = tap2.param2 - bigFactor;
1354 SetTimeAccelMenuState(tap2.param1, bigFactor, smallFactor, tap2.param3);
1355 FeatureTimeAccel.m_CurrentTimeAccel = tap2;
1356 }
1357 break;
1358 }
1359
1360 //---------------------------------------------------------------
1361 // LEVEL 2 - Script > Vehicles
1362 //---------------------------------------------------------------
1363 case ERPCs.DIAG_VEHICLE_DEBUG_OUTPUT:
1364 {
1366 CarScript.DEBUG_OUTPUT_TYPE = CachedObjectsParams.PARAM1_INT.param1;
1367 break;
1368 }
1369 //---------------------------------------------------------------
1370 case ERPCs.DIAG_VEHICLES_DUMP_CRASH_DATA_REQUEST:
1371 {
1373 CrashDebugData.SendData(player);
1374 break;
1375 }
1376 }
1377 }
1378
1379 //---------------------------------------------
1380 void GoUnconscious(PlayerBase player)
1381 {
1382 if (player.IsUnconscious())
1383 {
1384 player.SetHealth("", "Shock", 100);
1385 }
1386 else
1387 {
1388 player.m_UnconsciousEndTime = -60;
1389 player.SetHealth("", "Shock", 0);
1390 }
1391 }
1392
1393 //---------------------------------------------
1394 void InitTimeAccel()
1395 {
1396 FeatureTimeAccel.m_CurrentTimeAccel = GetTimeAccelMenuState();
1397
1398 string value;
1399
1400 if ( g_Game.CommandlineGetParam("timeAccel", value))
1401 {
1402 TStringArray params = new TStringArray();
1403
1404 value.Replace(" ","");
1405 value.Split(",", params);
1406
1407 bool enable = params[0].ToInt();
1408 int timeAccelBig = params[1].ToInt();
1409 float timeAccelSmall = params[2].ToFloat();
1410 int bitMask = params[3].ToInt();
1411
1412 SetTimeAccelMenuState(enable, timeAccelBig, timeAccelSmall, bitMask);
1413 }
1414 }
1415
1416 TimeAccelParam GetTimeAccelMenuState()
1417 {
1418 bool enable = DiagMenu.GetBool(DiagMenuIDs.FEATURE_TIME_ACCEL);
1419 float timeAccelBig = DiagMenu.GetRangeValue(DiagMenuIDs.FEATURE_TIME_ACCEL_VALUE1);
1420 float timeAccelSmall = DiagMenu.GetRangeValue(DiagMenuIDs.FEATURE_TIME_ACCEL_VALUE2);
1421 float timeAccel = timeAccelBig + timeAccelSmall;
1422 int bitMask = FeatureTimeAccel.GetTimeAccelBitmask();
1423
1424 TimeAccelParam param = new TimeAccelParam(enable, timeAccel, bitMask);
1425 return param;
1426 }
1427
1428 void SetTimeAccelMenuState(bool enable, int bigFactor, float smallFactor, int bitmask)
1429 {
1430 DiagMenu.SetValue(DiagMenuIDs.FEATURE_TIME_ACCEL, enable);
1431 DiagMenu.SetRangeValue(DiagMenuIDs.FEATURE_TIME_ACCEL_VALUE1, bigFactor);
1432 DiagMenu.SetRangeValue(DiagMenuIDs.FEATURE_TIME_ACCEL_VALUE2, smallFactor);
1433
1434 for (int i = 0; i < EnumTools.GetEnumSize(ETimeAccelCategories); ++i)
1435 {
1436 int bit = 1 << i;
1437 bool on = (bit & bitmask);
1438 DiagMenu.SetValue(FeatureTimeAccel.GetDiagIDByCategory(bit), on);
1439 }
1440 }
1441#endif
1442}
DamageType
exposed from C++ (do not change)
Определения DamageSystem.c:11
DayZGame g_Game
Определения DayZGame.c:4074
eAgents
Определения EAgents.c:3
DiagMenuIDs
Определения EDiagMenuIDs.c:2
ERPCs
Определения ERPCs.c:2
DebugActionType
Определения PluginDiagMenu.c:7
@ UNLIMITED_AMMO
Определения PluginDiagMenu.c:10
@ GENERIC_ACTIONS
Определения PluginDiagMenu.c:8
@ PLAYER_AGENTS
Определения PluginDiagMenu.c:9
void PluginLifespan()
Определения PluginLifespan.c:45
PluginBase GetPlugin(typename plugin_type)
Определения PluginManager.c:326
void UiHintPanel(Widget parent_widget)
Определения UiHintPanel.c:324
const string STAT_PLAYTIME
Определения AnalyticsManagerServer.c:4
static const int DROP_COLOR_RED
Определения BleedingIndicationConstants.c:15
static const float DROP_SIZE_VARIATION_MIN_LOW
Определения BleedingIndicationConstants.c:31
static const float DROP_SIZE_START_LOW
Определения BleedingIndicationConstants.c:29
static const int DROP_SCATTER_LOW
Определения BleedingIndicationConstants.c:33
static const int DROP_COLOR_ALPHA_END
Определения BleedingIndicationConstants.c:19
static const int DROP_COLOR_ALPHA_START
Определения BleedingIndicationConstants.c:18
static const int DROP_COLOR_BLUE
Определения BleedingIndicationConstants.c:17
static const float DROP_PROGRESS_THRESHOLD
Определения BleedingIndicationConstants.c:13
static const float SEQUENCE_DROP_DELAY_MAX_LOW
Определения BleedingIndicationConstants.c:28
static const float DROP_SIZE_VARIATION_MAX_LOW
Определения BleedingIndicationConstants.c:32
static const int DROP_COLOR_GREEN
Определения BleedingIndicationConstants.c:16
static const float DROP_COLOR_DESATURATIONEND
Определения BleedingIndicationConstants.c:14
static const float DROP_SIZE_END_LOW
Определения BleedingIndicationConstants.c:30
static const float DROP_DURATION_LOW
Определения BleedingIndicationConstants.c:26
static const float SEQUENCE_DROP_DELAY_MIN_LOW
Определения BleedingIndicationConstants.c:27
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...
Определения BleedingIndicationConstants.c:9
static BunkerBroadcastHandler GetInstance()
Определения BunkerBroadcastHandler.c:134
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
Определения Truck_02.c:2
Super root of all classes in Enforce script.
Определения EnScript.c:11
Определения EnDebug.c:241
float GetCloudEffectCooldownMin()
Определения DustEffectsManager.c:492
float GetGroundEffectLifetimeMax()
Определения DustEffectsManager.c:681
float GetCloudEffectDurationMin()
Определения DustEffectsManager.c:524
float GetGroundEffectThreshold()
Определения DustEffectsManager.c:581
float GetCloudEffectThreshold()
Определения DustEffectsManager.c:472
bool IsGroundEffectReadFromSurfaceEnable()
Определения DustEffectsManager.c:653
float GetGroundEffectIntensity()
Определения DustEffectsManager.c:603
float GetGroundEffectWindWeight()
Определения DustEffectsManager.c:638
float GetGroundEffectSizeMin()
Определения DustEffectsManager.c:692
bool IsCloudEffectReadFromSurfaceEnable()
Определения DustEffectsManager.c:566
bool IsGroundEffectEnable()
Определения DustEffectsManager.c:457
static DustEffectManager GetDustEffectManager()
Определения DustEffectsManager.c:6
bool IsCloudEffectEnable()
Определения DustEffectsManager.c:442
float GetCloudEffectDistance()
Определения DustEffectsManager.c:487
float GetGroundEffectLifetimeMin()
Определения DustEffectsManager.c:676
float GetGroundEffectSizeMax()
Определения DustEffectsManager.c:697
float GetGroundEffectRadius()
Определения DustEffectsManager.c:618
static int GetEnumSize(typename e)
Return amount of values in enum.
Определения EnConvert.c:726
Определения EnConvert.c:688
static void InventoryHFSMLogEnable(bool enable)
Определения 3_Game/DayZ/tools/Debug.c:784
static void InventoryReservationLogEnable(bool enable)
Определения 3_Game/DayZ/tools/Debug.c:774
static void SymptomLogEnable(bool enable)
Определения 3_Game/DayZ/tools/Debug.c:824
static void SyncLogEnable(bool enable)
Определения 3_Game/DayZ/tools/Debug.c:794
static void BleedingChancesLogEnable(bool enable)
Определения 3_Game/DayZ/tools/Debug.c:854
static void WeaponLogEnable(bool enable)
Определения 3_Game/DayZ/tools/Debug.c:834
static void QuickbarLogEnable(bool enable)
Определения 3_Game/DayZ/tools/Debug.c:804
static void ActionLogEnable(bool enable)
Определения 3_Game/DayZ/tools/Debug.c:754
static void InventoryMoveLogEnable(bool enable)
Определения 3_Game/DayZ/tools/Debug.c:764
static void BaseBuildingLogEnable(bool enable)
Определения 3_Game/DayZ/tools/Debug.c:814
Определения PPEConstants.c:68
Определения PlayerBaseClient.c:2
void PluginBase()
void OnDestroy()
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
proto bool Read(void value_in)
void SynchSpecialtyLevel()
Определения SoftSkillsManager.c:302
void SetSpecialtyLevel(float specialty_level)
Определения SoftSkillsManager.c:290
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
proto string ToString(bool simple=true)
Определения Transport.c:70
Serializer ParamsReadContext
Определения gameplay.c:15
proto void Print(void var)
Prints content of variable to console/log.
enum ShapeType ErrorEx
static proto void ClearScriptDiags()
To be used when scripted diags should not be present.
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 InitScriptDiags()
To be used before registering scripted diags.
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.
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 RegisterItem(int id, string shortcut, string name, int parent, string values, func callback=null)
Register a new item.
static proto void RegisterMenu(int id, string name, int parent)
Register a new menu.
static proto void Unregister(int id)
Unregister the item at given 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.
class array< Class T > TStringArray
proto int Replace(string sample, string replace)
Replace all occurrances of 'sample' in 'str' by 'replace'.
void Split(string sample, out array< string > output)
Splits string into array of strings separated by 'sample'.
Определения EnString.c:396
const int CALL_CATEGORY_SYSTEM
Определения 3_Game/DayZ/tools/tools.c:8