Troubleshoot Custom Weapons/Attachments for Modders
You're working on a custom weapon/attachment and run into a specific issue you have no idea how to deal with?
Then this is for you, this is a collection of known common/uncommon problems you might run into while working on a custom weapon/attachment and how to deal with them.
-
Softlock
-
[Description]
When your game freezes while trying to load an asset (for example trying to inspect a weapon or attach an attachment) its called a softlock.
-
[What to do]
[Custom Weapon]
You try to preview your new custom weapon for the first time and it causes a softlock, those are the things you can do:
- Check your default_blueprint. Are the attachment IDs correct? Are there attachments listed that don't even exist?
- Check the BLT Log for any errors related to missing assets on your custom weapon
- Check if the paths in your default_blueprint part assets (unit/object/mat_cfg) are all correct.
- Use an elimination method in which you only try to preview the gun one attachment at a time and comment the rest out to find the attachment thats causing the issue. Then use step 3.
[Custom Attachment]
You try to preview your new custom attachment for the first time and it causes a softlock, those are the things you can do:
- Check the BLT Log for any errors related to missing assets on your custom attachment
- Check if the paths in your part assets (unit/object/mat_cfg) are all correct.
-
Weapon Crash
-
[Description]
Equipping or previewing a specific custom weapon crashes your game.
The crash looks something like this: (Note the _add_part() lib/managers/weaponfactorymanager
)
Application has crashed: access violation
-------------------------------
Callstack:
payday2_win32_release (???) ???
payday2_win32_release (???) ???
payday2_win32_release (???) ???
payday2_win32_release (???) ???
payday2_win32_release (???) ???
-------------------------------
Current thread: Main
Script stack:
_add_part() lib/managers/weaponfactorymanager.lua:743
_add_part() lib/managers/weaponfactorymanager.lua:708
assemble_from_blueprint() lib/managers/weaponfactorymanager.lua:627
assemble_from_blueprint() @mods/WeaponLib/modules/different_akimbos/menuraycastweaponbase.lua:18
clbk() lib/managers/menu/menuscenemanager.lua:2186
lib/managers/dynamicresourcemanager.lua:220
-------------------------------
-
[What to do]
- First find the attachment thats causing this issue (If you can't find it use an elimination method like on Softlock step 4)
- Your based_on for the attachment is not the same as the .object/.unit files. (For example the luger magazine as based_on for magazine assets from the 5/7)
-
Weapon Crash 2
-
[Description]
Clicking on the weapon causes a crash. The crash looks something like this:
PAYDAY 2 Crash log
Application has crashed: C++ exception
[string "lib/managers/weaponfactorymanager.lua"]:1617: attempt to index a nil value
SCRIPT STACK
_check_sound_switch() lib/units/weapons/newraycastweaponbase.lua:694
original() @mods/WeaponLib-Release/modules/general_fixes/newraycastweaponbase.lua:83
_update_stats_values() @mods/base/req/core/Hooks.lua:260
make_fakeweaponbase() @mods/More Weapon Stats/lua/blackmarketgui.lua:787
mws_get_popup_data() @mods/More Weapon Stats/lua/blackmarketgui.lua:614
original() @mods/More Weapon Stats/lua/blackmarketgui.lua:560
show_stats() @mods/base/req/core/Hooks.lua:260
on_slot_selected() lib/managers/menu/blackmarketgui.lua:6672
ddi_original_blackmarketgui_mousepressed() lib/managers/menu/blackmarketgui.lua:6282
mouse_pressed() @mods/Drag and Drop Inventory/blackmarketgui.lua:19
mouse_pressed() lib/managers/menu/menucomponentmanager.lua:1458
mouse_pressed() @mods/base/lua/MenuComponentManager.lua:24
mouse_pressed() lib/managers/menu/menurenderer.lua:368
mouse_press() lib/managers/menu/menuinput.lua:570
lib/managers/mousepointermanager.lua:341
-------------------------------
Callstack:
payday2_win32_release (???) ???
payday2_win32_release (???) zip_get_name
payday2_win32_release (???) zip_get_name
-
[What to do]
- You probably forgot to close one of your xml tags like
<Weapon>
, either try to find the unclosed tag manually or run it through an XML validator