Troubleshooting Guide
Home | Troubleshooting Guide
When something goes wrong, start here. This guide is organized by what you see (the symptom), not by system. Find your problem, read the cause, apply the fix.
Inhaltsverzeichnis
- Mod Won't Load
- Script Errors
- RPC and Network Issues
- UI Problems
- Build and PBO Issues
- Performance Issues
- Item, Vehicle, and Entity Issues
- Config and Types Issues
- Persistence Issues
- Decision Flowcharts
- Debug Commands Quick Reference
- Log File Locations
- Where to Get Help
1. Mod Won't Load
These are problems where the mod macht nicht appear, macht nicht activate, or is rejected by das Spiel beim Start.
| Symptom | Cause | Fix |
|---|---|---|
| "Addon requires addon X" error beim Start | Missing or incorrect requiredAddons[] entry | Add the exact CfgPatches class name of the dependency to your requiredAddons[]. Names are case-sensitive. See Chapter 2.2. |
| Mod not visible in launcher | mod.cpp file is missing or has syntax errors | Create or fix mod.cpp in your mod root. It must contain name, author, and dir fields. See Chapter 2.3. |
| "Config parse error" beim Start | Syntax error in config.cpp | Check for missing semicolons after class closings (};), unclosed braces, or unbalanced quotes. Every class body ends with };, every property ends with ;. |
| No script log entries at all | CfgMods defs block points to wrong path | Verify that your config.cpp CfgMods entry has the correct dir and that the script defs file matches your folder structure. Die Engine silently ignores wrong paths. |
| Mod loads but nothing happens | Scripts compile but never execute | Check that your mod has an entry point: a modded class MissionServer or MissionGameplay, a registered module, or a plugin. Scripts mache nicht run by themselves. See Chapter 7.2. |
| "Cannot register cfg class X" | Duplicate CfgPatches class name | Another mod already uses that class name. Rename your CfgPatches class to something unique with your mod prefix. |
| Mod loads only in singleplayer | Server macht nicht have the mod installed | Ensure the server's -mod= launch parameter includes your mod path, and the PBO is in the server's @YourMod/Addons/ folder. |
| "Addon X ist nicht signed" | Server requires signed addons | Sign your PBOs with your private key and provide the .bikey to the server's keys/ folder. See Chapter 4.6. |
2. Script Errors
These appear in the script log as SCRIPT (E): or SCRIPT ERROR: lines.
| Symptom | Cause | Fix |
|---|---|---|
Null pointer access | Accessing a variable that is null | Add a null check before using the variable: if (myVar) { myVar.DoSomething(); }. This is am häufigsten runtime error. |
Cannot convert type 'X' to type 'Y' | Direct cast between incompatible types | Use Class.CastTo() for safe downcasting: Class.CastTo(result, source);. Never assume a cast will succeed. See Chapter 1.9. |
Undefined variable 'X' | Typo, wrong scope, or wrong layer | Check spelling first. If die Variable is a class from another file, ensure it is defined in the same or lower layer. 3_Game cannot see 4_World types. See Chapter 2.1. |
Method 'X' not found | Calling a method that macht nicht exist on that class | Verify die Methode name and check der Elternteil class. You may need to cast to a more specific type first. Check vanilla scripts at P:\DZ\scripts\ for the correct API. |
Division by zero | Dividing by a variable that equals 0 | Add a guard: if (divisor != 0) result = value / divisor;. This also applies to modulo (%) operations. |
Redeclaration of variable 'X' | Same variable name declared in sibling else if blocks | Declare die Variable once before the if/else chain, then assign inside each branch. See Chapter 1.12. |
Member already defined | Duplicate variable or method name in a class | Check for copy/paste errors. Each member name muss unique within a class hierarchy (including parent classes). |
Cannot create instance of type 'X' | Trying to new an abstract class or an interface | Check that die Klasse ist nicht abstract (no proto methods without bodies). Instantiate a concrete subclass stattdessen. |
Stack overflow | Infinite recursion | A method calls itself without a base case, or a modded class override macht nicht properly guard against re-entry. Add a depth check or fix the recursive call. |
Index out of range | Array access with invalid index | Always check array.Count() or use array.IsValidIndex(idx) before accessing by index. |
String conversion error | Using string.ToInt() or string.ToFloat() on non-numeric text | Validate string content before conversion. There is no try/catch, so you must guard manually. |
Error: Serializer X mismatch | Read/write order macht nicht match in serialization | Ensure OnStoreSave() and OnStoreLoad() write and read the same types in the same order, including version checks. |
| Syntax error with no clear message | Backslash \ or escaped quote \" in string literal | Enforce Script's CParser macht nicht support \\ or \". Use forward slashes for paths ("my/path/file"). For quotes, use single-quote characters. See Chapter 1.12. |
JsonFileLoader returns null data | Assigning der Rückgabewert of JsonLoadFile() | JsonLoadFile() returns void. Pre-allocate das Objekt and pass it by reference: ref MyConfig cfg = new MyConfig(); JsonFileLoader<MyConfig>.JsonLoadFile(path, cfg);. See Chapter 6.8. |
Object.IsAlive() macht nicht exist | Calling IsAlive() on base Object | IsAlive() is only on EntityAI. Cast first: EntityAI entity; if (Class.CastTo(entity, obj) && entity.IsAlive()) { ... } |
| No ternary operator support | Using condition ? a : b syntax | Enforce Script has no ternary operator. Use an if/else block stattdessen. See Chapter 1.12. |
do...while loop error | Using do { } while(cond) | Enforce Script macht nicht support do...while. Use a while loop with a break condition stattdessen. See Chapter 1.12. |
| Multiline method call fails | Splitting a single method call across lines incorrectly | Avoid splitting chained calls with comments or preprocessor directives between lines. Keep method call chains on one line or use intermediate variables. |
3. RPC and Network Issues
Problems with Remote Procedure Calls and client-server communication.
| Symptom | Cause | Fix |
|---|---|---|
| RPC sent but never received | Registration mismatch | Both sender and receiver must register the same RPC ID. Verify the ID matches exactly on both client and server. See Chapter 6.9. |
| RPC received but data is corrupted | Read/write parameter mismatch | The sender's Write() calls and receiver's Read() calls must have the same types in the same order. A single mismatch corrupts all subsequent reads. |
| RPC crashes der Server | Null entity target or wrong parameter types | Ensure das Ziel entity exists auf beiden Seiten. Never send null as the RPC target. Validate all read parameters before use. |
| Data not syncing to clients | Missing SetSynchDirty() | After changing any variable registered for synchronization, call SetSynchDirty() on the entity. Without it, die Engine macht nicht broadcast changes. |
| Works in singleplayer / listen server, fails on dedicated | Different code paths for listen vs. dedicated | On a listen server, both client and server run in the same process, hiding timing and null issues. Always test on a dedicated server. Check GetGame().IsServer() and GetGame().IsMultiplayer() guards. |
| RPC floods and server lag | Sending RPCs every frame or in tight loops | Throttle RPC calls with timers or accumulators. Batch multiple small updates into a single RPC. Use Net Sync Variables for data that changes frequently. |
| Client receives RPC meant for all clients | Using RPCSingleParam with wrong target | Use null as the identity parameter to broadcast, or provide a specific PlayerIdentity to send to one client. |
OnRPC() never called | Override is in the wrong class or layer | OnRPC() muss overridden on die Entität that receives the RPC. If overriding on PlayerBase, ensure you call super.OnRPC() so other mods still work. |
| Net Sync Variables not updating on client | Missing RegisterNetSyncVariable*() or wrong type | Register each variable in der Konstruktor with the correct method (RegisterNetSyncVariableInt, RegisterNetSyncVariableFloat, RegisterNetSyncVariableBool). Override OnVariablesSynchronized() to react to changes auf dem Client side. |
| RPC works for host but not other players | Using player object reference stattdessen of identity | On dedicated servers, the host player ist nicht special. Ensure you are using PlayerIdentity for targeting and not relying on local player references that only exist on the sender's machine. |
4. UI Problems
Issues with GUI layouts, widgets, menus, and input.
| Symptom | Cause | Fix |
|---|---|---|
| Layout loads but nothing is visible | Widget size is zero | Check hexactsize and vexactsize values. Both muss greater than zero. Do not use negative sizes. See Chapter 3.3. |
CreateWidgets() returns null | Layout file path is wrong or file is missing | Verify the .layout file path is correct (forward slashes, no typos). Die Engine returns null silently on bad paths, no error is logged. |
| Widgets exist but kann nicht clicked | Another widget is covering the button | Check widget priority (z-order). Higher priority widgets render on top and capture input first. Also check that the button has ButtonWidget as its ScriptClass or is a ButtonWidget type. |
| Game input is stuck / cannot move after closing UI | ChangeGameFocus() calls are imbalanced | Every GetGame().GetInput().ChangeGameFocus(1) muss paired with ChangeGameFocus(-1). Track your focus changes and ensure cleanup happens even if the UI is force-closed. |
Text shows #STR_some_key literally | Stringtable entry is missing or file ist nicht loaded | Add the key to your stringtable.csv. Check that the CSV is in your mod root and has the correct Language,Key,Original header format. See Chapter 5.2. |
| Mouse cursor macht nicht appear | ShowUICursor() not called | Call GetGame().GetUIManager().ShowUICursor(true) when opening your UI. Call it with false when closing. |
| UI flickers or renders behind game world | Layout ist nicht attached to correct parent widget | Attach your layout to a proper parent. For fullscreen overlays, use GetGame().GetWorkspace() as the parent. |
| ScrollWidget content macht nicht scroll | Content ist nicht inside a WrapSpacer or child widget | ScrollWidget needs a single child (usually a WrapSpacer or FrameWidget) that is larger than the scroll area. Put your content widgets inside that child. See Chapter 3.3. |
| Image or icon not showing | Path uses backslashes or wrong extension | Use forward slashes in image paths. Verify the file exists and is in a recognized format (.paa, .edds). Use ImageWidget for images, not TextWidget. |
| Slider macht nicht respond to input | Missing script handler or wrong widget type | Ensure the slider widget has a ScriptClass assigned and that your handler processes OnChange events. Initialize the slider range in script. |
| UI looks different at other resolutions | Using hardcoded pixel values | Use proportional sizing (halign, valign, hfill, vfill) stattdessen of fixed pixel values. Test at multiple resolutions. See Chapter 3.3. |
5. Build and PBO Issues
Problems with packing, binarizing, and deploying mods.
| Symptom | Cause | Fix |
|---|---|---|
| "Include file not found" during binarize | Config references a file that macht nicht exist | Check that all #include paths in model configs and rvmats are correct. Ensure the P: drive is mounted and source files are accessible. |
| PBO builds successfully but mod crashes on load | config.cpp binarization error | Try building with binarization disabled to isolate the issue. If it works unbinarized, das Problem is in a config that the binarizer rejects silently. |
| "Signature check failed" on server connect | PBO is unsigned or signed with wrong key | Re-sign the PBO with your private key using DSSignFile. Ensure der Server has the matching .bikey in its keys/ folder. |
| File patching changes not taking effect | Not using the diagnostic executable | File patching only works with DayZDiag_x64.exe, not the retail DayZ_x64.exe. Launch with -filePatching parameter. |
| "Prefix mismatch" warning | PBO prefix macht nicht match config.cpp | Ensure the $PBOPREFIX$ file content matches the addon prefix defined in your config.cpp CfgPatches. |
| Addon Builder fails silently | Path contains special characters or spaces | Move your project to a path without spaces or special characters. Use short folder names. |
| Binarized model looks wrong in-game | LOD or geometry issues in P3D | Check model LODs in Object Builder. Ensure the Fire Geometry and View Geometry LODs are correct. Rebuild the model. |
| Old version of mod loads despite changes | Cached PBO or workshop version overriding | Delete the old PBO. Check that das Spiel ist nicht loading a cached workshop version. Verify the -mod= path points to your development folder, not the workshop folder. |
| Addon Builder reports "no entry" warnings | Config references a property that macht nicht exist | These warnings are usually non-fatal. Check that all CfgVehicles base classes exist. Missing entries in inherited configs cause cascading warnings. |
| PBO packing includes unwanted files | No .pboignore or filter set | Addon Builder packs everything in the source folder. Use a .pboignore file or explicitly exclude file types (.psd, .blend, .bak) in the builder settings. |
6. Performance Issues
Server or client FPS drops, memory problems, and slow operations.
| Symptom | Cause | Fix |
|---|---|---|
| Low server FPS (below 20) | Heavy processing in OnUpdate() or per-frame methods | Use a delta-time accumulator to throttle work: only execute logic every N seconds. Move expensive operations to timers or scheduled callbacks. See Chapter 7.7. |
| Memory grows over time (memory leak) | ref reference cycles preventing garbage collection | When two objects hold ref references to each other, neither is ever freed. Make one side a raw (non-ref) reference. Break cycles in cleanup methods. See Chapter 1.8. |
| Slow server startup | Heavy initialization in OnInit | Defer non-critical initialization with GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(). Load configs lazily on first use stattdessen of all beim Start. |
| Client FPS drops near specific objects | Complex model with too many polygons or bad LODs | Add proper LOD levels to your model. Die Engine uses LODs to reduce poly count at distance. Ensure LOD transitions are smooth. |
| Stutter every few seconds | Periodic garbage collection spikes | Reduce object churn. Reuse objects via pooling stattdessen of constantly creating and destroying them. Pre-allocate arrays. |
| Network lag spikes | Too many RPCs or large RPC payloads | Batch small updates into fewer RPCs. Use Net Sync Variables for frequently changing values. Compress data where possible. |
| Log file growing very large | Excessive Print() or debug logging | Remove or guard debug Print() calls behind #ifdef DEVELOPER or a debug flag. Large log files can slow disk I/O. |
| High entity count causing server lag | Too many spawned entities in die Welt | Reduce nominal values in types.xml. Clean up dynamic objects with lifetime management. Limit AI spawn density. |
7. Item, Vehicle, and Entity Issues
Problems with custom items, vehicles, and world entities.
| Symptom | Cause | Fix |
|---|---|---|
| Item wird nicht spawn (admin tools say "cannot create") | scope=0 in config or missing from types.xml | Set scope=2 in your item's CfgVehicles config for items that sollte spawnable. Add an entry to your server's types.xml if der Gegenstand should appear in loot. |
| Item spawns but is invisible | Model path (.p3d) is wrong or missing | Check the model path in your CfgVehicles class. Use forward slashes. Verify the .p3d file exists and is packed in your PBO. |
| Item has no inventory icon | Missing or wrong inventorySlot or icon config | Define the picture path in your config pointing to a valid .paa or .edds icon file. Check rotationFlags for correct icon orientation. |
| Vehicle spawns but wird nicht drive | Missing engine, wheels, or parts | Ensure all erforderlich parts are attached. Use OnDebugSpawn() to spawn a fully assembled vehicle for testing. Check that simulation type is correct in config. |
| Item kann nicht picked up | Incorrect geometry or wrong inventorySlot | Verify der Gegenstand has proper Fire Geometry in the model. Check that the itemSize[] is set correctly and der Gegenstand fits in available inventory slots. |
| Entity immediately deleted after spawn | lifetime is zero in types.xml or scope issue | Set appropriate lifetime value in types.xml. Ensure scope=2 in config. Check server cleanup settings in globals.xml. |
| Custom animal/zombie macht nicht move | AI config missing or broken | Verify AIAgentType in config. Check that die Entität has proper NavMesh-compatible geometry. Test with vanilla AI configs first. |
| Attachments mache nicht snap to item | Wrong inventorySlot names | Attachment slot names must match exactly between der Elternteil item's attachments[] and das Kind item's inventorySlot[]. Names are case-sensitive. |
| Item damage zones not working | DamageSystem config mismatch with model | Each DamageZone name must match a named selection in the model's Fire Geometry LOD. Check with Object Builder. See Chapter 6.1. |
| Custom sound macht nicht play | Sound shader or config path wrong | Verify the sound shader class name in CfgSoundShaders and CfgSoundSets. Check that the .ogg file path is correct and the file is packed in the PBO. |
| Item has wrong weight or size | weight and itemSize[] config values | weight is in grams (integer). itemSize[] defines the inventory grid slots as {width, height}. Check parent class values if inheriting. |
| Crafting recipe not appearing | Recipe config or condition wrong | Check CfgRecipes registration. Verify both ingredient items have correct canBeSplit, isMeleeWeapon, or other erforderlich properties. Test with vanilla recipe configs as reference. |
8. Config and Types Issues
Problems with config.cpp, types.xml, and other configuration files.
| Symptom | Cause | Fix |
|---|---|---|
| Config values not taking effect | Using binarized config but editing source | Rebuild your PBO after config changes. If using file patching, ensure DayZDiag_x64.exe and -filePatching are active. |
types.xml changes ignored | Editing the wrong types.xml file | Der Server loads types from mpmissions/your_mission/db/types.xml. Editing a types file elsewhere has no effect. Check the server's active mission folder. |
| "Error loading types" on server start | XML syntax error in types.xml | Validate your XML. Common issues: unclosed tags, missing quotes on attribute values, or & stattdessen of &. Use an XML validator. |
| Items spawn with wrong quantities | quantmin/quantmax values incorrect | Values are percentages (0-100) in types.xml, not absolute counts. -1 means "use default". |
| Loot table not spawning items | nominal is 0 or missing category/usage/tag | Set nominal above 0. Add at least one <usage> and <category> tag so the Central Economy knows where to spawn items. |
| JSON config file not loading | Malformed JSON or wrong path | Validate JSON syntax (no trailing commas, proper quoting). Use $profile: prefix for server profile paths. Check that the file exists with FileExist(). |
cfgGameplay.json changes ignored | File not enabled or wrong location | Place the file in the mission folder. Set enableCustomGameplay to 1 in serverDZ.cfg. Restart der Server (not just reload). |
| Class inheritance not working in config | baseClass misspelled or not loaded | Der Elternteil class must exist in the same or earlier addon. Check that requiredAddons[] includes the addon defining der Elternteil class. |
9. Persistence Issues
Problems with data saving and loading across server restarts.
| Symptom | Cause | Fix |
|---|---|---|
| Player data lost on restart | Not saving to $profile: directory | Use JsonFileLoader<T>.JsonSaveFile() with a $profile: path. Save on player disconnect (PlayerDisconnected) and periodically during gameplay. |
| Saved file is empty or corrupt | Crash during write, or serialization error | Write to a temporary file first, then rename to the final path. Validate data before saving. Always handle FileExist() checks on load. |
OnStoreSave/OnStoreLoad mismatch | Version changed but no migration | Always write a version number first. On load, read the version and handle old formats: if (version < CURRENT) { /* read old format */ }. |
| Items disappear from storage | lifetime expired in types.xml | Increase lifetime for persistent items. Standard is often too short for base-building containers. Check globals.xml cleanupLifetimeRuin value. |
| Custom variables reset on relog | Variables not synced or stored | Register variables for network sync with RegisterNetSyncVariable*(). For persistence, save/load in OnStoreSave()/OnStoreLoad(). |
10. Decision Flowcharts
Step-by-step diagnostic processes for common "it doesn't work" situations.
"My mod doesn't work at all"
- Check the script log for
SCRIPT (E)errors. Lösung the first error you find. (Section 2) - Is the mod listed in the launcher? If not, check that
mod.cppexists and is valid. (Section 1) - Does the log mention your CfgPatches class? If not, check
config.cppsyntax,requiredAddons[], and the-mod=launch parameter. - Do scripts compile? Look for compile errors in the RPT. Lösung any syntax errors. (Section 2)
- Is there an entry point? You need a
modded class MissionServer/MissionGameplay, a registered module, or a plugin. Scripts without an entry point never run. - Still nothing? Add
Print("MY_MOD: Init reached");at your entry point to confirm execution.
"Works offline but not on a dedicated server"
- Is the mod installed auf dem Server? Check that
-mod=includes your mod path and the PBO is in@YourMod/Addons/. - Client-only code on server?
GetGame().GetPlayer()returnsnullduring server init. AddGetGame().IsServer()/GetGame().IsClient()guards. - RPCs working? Add
Print()on both send and receive sides. Check that RPC IDs match and target entity exists auf beiden Seiten. (Section 3) - Data syncing? Verify
SetSynchDirty()is called after changes. Check read/write parameter order matches. - Timing issues? Listen servers hide race conditions because client and server share a process. Dedicated servers expose these. Add null checks and readiness guards.
"My UI is broken"
- Does
CreateWidgets()return null? The layout path is wrong or the file is missing. Check forward slashes, verify the.layoutis packed in the PBO. - Widgets exist but invisible? Check sizes (muss > 0, no negative values). Check
Show(true)is called. Check text/widget alpha ist nicht 0. - Visible but not clickable? Check widget
priority(z-order). VerifyScriptClassis assigned. Confirm the handler is set. - Input stuck after closing UI?
ChangeGameFocus()calls are imbalanced. EveryChangeGameFocus(1)needs a matchingChangeGameFocus(-1). Check cleanup runs even on force-close.
11. Debug Commands Quick Reference
Use these in the DayZDiag debug console or admin tools.
| Action | Command |
|---|---|
| Spawn item on ground | GetGame().CreateObject("AKM", GetGame().GetPlayer().GetPosition()); |
| Spawn vehicle (assembled) | EntityAI car = EntityAI.Cast(GetGame().CreateObject("OffroadHatchback", GetGame().GetPlayer().GetPosition())); if (car) car.OnDebugSpawn(); |
| Spawn zombie | GetGame().CreateObject("ZmbM_Normal_00", GetGame().GetPlayer().GetPosition()); |
| Teleport to coords | GetGame().GetPlayer().SetPosition("6543 0 2114".ToVector()); |
| Heal fully | GetGame().GetPlayer().SetHealth("", "", 5000); |
| Full blood | GetGame().GetPlayer().SetHealth("", "Blood", 5000); |
| Stop unconscious | GetGame().GetPlayer().SetHealth("", "Shock", 0); |
| Set noon | GetGame().GetWorld().SetDate(2024, 9, 15, 12, 0); |
| Set night | GetGame().GetWorld().SetDate(2024, 9, 15, 2, 0); |
| Clear weather | GetGame().GetWeather().GetOvercast().Set(0,0,0); GetGame().GetWeather().GetRain().Set(0,0,0); |
| Heavy rain | GetGame().GetWeather().GetOvercast().Set(1,0,0); GetGame().GetWeather().GetRain().Set(1,0,0); |
| Print position | Print(GetGame().GetPlayer().GetPosition()); |
| Check server/client | Print("IsServer: " + GetGame().IsServer().ToString()); |
| Print FPS | Print("FPS: " + (1.0 / GetGame().GetDeltaT()).ToString()); |
Common Chernarus locations: Elektro "10570 0 2354", Cherno "6649 0 2594", NWAF "4494 0 10365", Tisy "1693 0 13575", Berezino "12121 0 9216"
Launch Parameters
| Parameter | Purpose |
|---|---|
-filePatching | Load unpacked files (requires DayZDiag) |
-scriptDebug=true | Enable script debug features |
-doLogs | Enable detailed logging |
-adminLog | Enable admin log on server |
-freezeCheck | Detect and log script freezes |
-noSound | Disable sound (faster testing) |
-noPause | Server macht nicht pause when empty |
-profiles=<path> | Custom profile/log directory |
-connect=<ip> | Auto-connect to server on launch |
-port=<port> | Server port (default 2302) |
-mod=@Mod1;@Mod2 | Load mods (semicolon-separated) |
-serverMod=@Mod | Server-only mods (not sent to clients) |
12. Log File Locations
Knowing where to look is half the battle.
Client Logs
| Log | Location | Enthält |
|---|---|---|
| Script log | %localappdata%\DayZ\ (most recent .RPT file) | Script errors, warnings, Print() output |
| Crash dumps | %localappdata%\DayZ\ (.mdmp files) | Crash analysis data |
| Workbench log | Workbench IDE output panel | Compile errors during development |
Server Logs
| Log | Location | Enthält |
|---|---|---|
| Script log | <server_root>\profiles\ (most recent .RPT file) | Script errors, server-side Print() |
| Admin log | <server_root>\profiles\ (.ADM file) | Player connections, kills, chat |
| Crash dumps | <server_root>\profiles\ (.mdmp files) | Server crash data |
| Custom logs | <server_root>\profiles\ | Any logs written with FileHandle |
Reading Logs Effectively
- Search for
SCRIPT (E)to find script errors - Search for
SCRIPT ERRORto find fatal script problems - Search for your mod name or class names to filter relevant entries
- Errors often cascade -- fix the first error in the log, not the last
- Timestamp each log read: the most recent
.RPTfile has the latest session
13. Where to Get Help
When this guide macht nicht solve your problem, these are the best resources.
Community Resources
| Resource | URL | Best For |
|---|---|---|
| DayZ Modding Discord | discord.gg/dayzmods | Real-time help from experienced modders |
| Bohemia Interactive Forums | forums.bohemia.net/forums/forum/231-dayz-modding/ | Official forums, announcements |
| DayZ Feedback Tracker | feedback.bistudio.com/tag/dayz/ | Official bug reports |
| DayZ Workshop | Steam Workshop (DayZ) | Browse published mods for reference |
| Bohemia Wiki | community.bistudio.com/wiki/DayZ:Modding_Basics | Official modding basics |
Reference Source Code
Study these mods to learn patterns from experienced modders:
| Mod | What to Learn |
|---|---|
| Community Framework (CF) | Module lifecycle, RPC management, logging, managed pointers |
| DayZ Expansion | Large-scale mod architecture, market system, vehicles, parties |
| Community Online Tools (COT) | Admin tools, permissions, UI patterns, player management |
| VPP Admin Tools | Server administration, permissions, ESP, teleportation |
| Dabs Framework | MVC pattern, data binding, UI component framework |
| BuilderItems | Simple item mod structure (good starting example) |
| BaseBuildingPlus | Building system, placement mechanics, persistence |
Vanilla Script Reference
The authoritative reference for all engine classes and methods:
- Mount P: drive via DayZ Tools
- Navigate to
P:\DZ\scripts\ - Organized by layer:
3_Game/,4_World/,5_Mission/ - Use your editor's search to find any vanilla class, method, or enum
Quick Checklist Before Asking for Help
Before posting in a community forum or Discord, gather this information:
- What you expected to happen
- What actually happened (exact error messages, behavior)
- Script log excerpt (the relevant
SCRIPT (E)lines, not the entire log) - Your code (the relevant section, not the entire mod)
- What you already tried (saves everyone time)
- DayZ version and mod list (compatibility matters)
- Client or server (specify which side has the problem)
Quick Symptom Index
Cannot find your problem in the sections above? Try this alphabetical index.
| Symptom (what you see) | Go to |
|---|---|
| Addon Builder fails | Section 5 |
| Array index out of range | Section 2 |
| Buttons not clickable | Section 4 |
| Cannot convert type | Section 2 |
| Cannot create instance | Section 2 |
| Config parse error | Section 1 |
| Cursor missing | Section 4 |
| Division by zero | Section 2 |
| Data lost on restart | Section 9 |
| Entity deleted after spawn | Section 7 |
| File patching not working | Section 5 |
| FPS drops | Section 6 |
| Game input stuck | Section 4 |
| Image not showing | Section 4 |
| Item invisible | Section 7 |
| Item won't spawn | Section 7 |
| JSON not loading | Section 8 |
| Layout returns null | Section 4 |
| Loot not spawning | Section 8 |
| Member already defined | Section 2 |
| Memory leak | Section 6 |
| Method not found | Section 2 |
| Mod not in launcher | Section 1 |
| Null pointer access | Section 2 |
| Player data lost | Section 9 |
| PBO signature failed | Section 5 |
| Prefix mismatch | Section 5 |
| RPC not received | Section 3 |
| Scroll not working | Section 4 |
| Save file corrupt | Section 9 |
| Server crash beim Start | Section 2 |
| Slider not responding | Section 4 |
| Stack overflow | Section 2 |
| Text shows STR key | Section 4 |
| Types.xml ignored | Section 8 |
| Undefined variable | Section 2 |
| Variable redeclaration | Section 2 |
| Vehicle won't drive | Section 7 |
| Widget invisible | Section 4 |
| Works offline fails online | Section 3 |
Problem still unsolved? Check the FAQ for additional answers, the Cheat Sheet for syntax reference, or ask in the DayZ Modding Discord.
