I'm not sure what your scripting proficiency level is, but if you're at all familiar with adding actions (via the addAction command) that is probably your best bet. I'm still new at this so maybe somebody will come along with a better answer.
In this less-than-elegant example, we have an object named "deadBody" which represents the body, and we have a global variable called "CacheTempAction" which we are going to use to store the action ID so we can remove it once you've searched the body. You'll also have to know the game position (used to create the marker) of the weapon cache.
You could create a script called AddWeaponCacheMarker.sqf:
createMarkerLocal ( "Weapon Cache", [position of the cache] );
deadBody removeAction CacheTempAction;
And then, somewhere in the mission initialization (or death-of-the-enemy code) add the action to the body with this command:
CacheTempAction = deadBody addAction ["Search Body", "AddWeaponCacheMarker.sqf"];
There are numerous ways to improve this, but I hope you get the idea. Note that I've used createMarkerLocal which will create a marker locally on the player's instance, but not on any remote (server or other player) running instance. You can use createMarker instead, which will create it across all instances.
- paritybit