Jump to content

Bag drop mod


Deccypher

Recommended Posts

Bag Drop Mod A14.5

 

Ever get sick of surviving a big 7 day horde and getting no loot because you couldn't get to the corpses? with this mod the zombies now drop a series of bags instead of being loot able net results are more loot because you didn't miss out on any, less group drops because your leaving fighting to go loot, faster waves because entities are gone quicker, less cpu usage because entities are gone quicker.

 

Achieved this by adding new loot container blocks each connected. to the appropriate loot list of its zombie ( copied from the original zombie loot lists with the destroy on close = true so the world doesn't get littered with bags. they are the model of the roof top zombie so they still look like corpses kind of, they even squelch when looted!

 

managed to find a cause of the null refs now tested on 4 servers and sp mode heres a preview video

 

[video=youtube_share;PPi00f0g0TE]

 

here it is

 

Open for servers C:\Program Files (x86)\Steam\steamapps\common\7 Days to Die Dedicated Server\Data\Config\blocks.xml for sp/local C:\Program Files (x86)\Steam\steamapps\common\7 Days to Die\Data\Config\blocks.xml

 

Find

</blocks>

 

before add

 

 

<block id="2000" name="cntcorpsenormzombie01">

<property name="CustomIcon" value="cntCorpseLoot01" />

<property name="Class" value="Loot" />

<property name="Material" value="organic" />

<property name="Shape" value="ModelEntity" />

<property name="Mesh" value="models" />

<property name="Model" value="Entities/LootContainers/corpse_loot01Prefab" param1="main_mesh" />

<property name="Texture" value="241" />

<property name="Collide" value="movement,melee,bullet,rocket" />

<property name="LootList" value="15" />

<drop event="Destroy" name="GoreBlock1Prefab" count="1"/>

<drop event="Fall" name="GoreBlock1Prefab" count="1" prob="1" stick_chance="1" />

</block>

<block id="2001" name="cntcorpsefatzombiecop">

<property name="CustomIcon" value="cntCorpseLoot01" />

<property name="Class" value="Loot" />

<property name="Material" value="organic" />

<property name="Shape" value="ModelEntity" />

<property name="Mesh" value="models" />

<property name="Model" value="Entities/LootContainers/corpse_loot02Prefab" param1="main_mesh" />

<property name="Texture" value="241" />

<property name="Collide" value="movement,melee,bullet,rocket" />

<property name="LootList" value="17" />

<drop event="Destroy" name="GoreBlock1Prefab" count="1"/>

<drop event="Fall" name="GoreBlock1Prefab" count="1" prob="1" stick_chance="1" />

</block>

 

<block id="2002" name="cntcorpsezombieNurse">

<property name="CustomIcon" value="cntCorpseLoot01" />

<property name="Class" value="Loot" />

<property name="Material" value="organic" />

<property name="Shape" value="ModelEntity" />

<property name="Mesh" value="models" />

<property name="Model" value="Entities/LootContainers/corpse_loot01Prefab" param1="main_mesh" />

<property name="Texture" value="241" />

<property name="Collide" value="movement,melee,bullet,rocket" />

<property name="LootList" value="21" />

<drop event="Destroy" name="GoreBlock1Prefab" count="1"/>

<drop event="Fall" name="GoreBlock1Prefab" count="1" prob="1" stick_chance="1" />

</block>

 

<block id="2003" name="cntcorpsenormzombie02">

<property name="CustomIcon" value="cntCorpseLoot01" />

<property name="Class" value="Loot" />

<property name="Material" value="organic" />

<property name="Shape" value="ModelEntity" />

<property name="Mesh" value="models" />

<property name="Model" value="Entities/LootContainers/corpse_loot02Prefab" param1="main_mesh" />

<property name="Texture" value="241" />

<property name="Collide" value="movement,melee,bullet,rocket" />

<property name="LootList" value="38" />

<drop event="Destroy" name="GoreBlock1Prefab" count="1"/>

<drop event="Fall" name="GoreBlock1Prefab" count="1" prob="1" stick_chance="1" />

</block>

 

<block id="2004" name="cntcorpsezombieferal">

<property name="CustomIcon" value="cntCorpseLoot01" />

<property name="Class" value="Loot" />

<property name="Material" value="organic" />

<property name="Shape" value="ModelEntity" />

<property name="Mesh" value="models" />

<property name="Model" value="Entities/LootContainers/corpse_loot01Prefab" param1="main_mesh" />

<property name="Texture" value="241" />

<property name="Collide" value="movement,melee,bullet,rocket" />

<property name="LootList" value="61" />

<drop event="Destroy" name="GoreBlock1Prefab" count="1"/>

<drop event="Fall" name="GoreBlock1Prefab" count="1" prob="1" stick_chance="1" />

</block>

 

<block id="2005" name="cntcorpsesnowzombie">

<property name="CustomIcon" value="cntCorpseLoot01" />

<property name="Class" value="Loot" />

<property name="Material" value="organic" />

<property name="Shape" value="ModelEntity" />

<property name="Mesh" value="models" />

<property name="Model" value="Entities/LootContainers/corpse_loot02Prefab" param1="main_mesh" />

<property name="Texture" value="241" />

<property name="Collide" value="movement,melee,bullet,rocket" />

<property name="LootList" value="66" />

<drop event="Destroy" name="GoreBlock1Prefab" count="1"/>

<drop event="Fall" name="GoreBlock1Prefab" count="1" prob="1" stick_chance="1" />

</block>

 

 

 

save and close.

 

open for servers C:\Program Files (x86)\Steam\steamapps\common\7 Days to Die Dedicated Server\Data\Config\loot.xml for sp/local C:\Program Files (x86)\Steam\steamapps\common\7 Days to Die\Data\Config\loot.xml

 

find each of the following

<lootcontainer id="15" count="0,2" size="4,4" sound_open="UseActions/open_corpse" sound_close="UseActions/close_corpse" loot_quality_template="baseTemplate">

<lootcontainer id="17" count="0,2" size="4,4" sound_open="UseActions/open_corpse" sound_close="UseActions/close_corpse" loot_quality_template="baseTemplate">

<lootcontainer id="21" count="0,2" size="4,4" sound_open="UseActions/open_corpse" sound_close="UseActions/close_corpse" loot_quality_template="baseTemplate">

<lootcontainer id="38" count="0,2" size="4,4" sound_open="UseActions/open_corpse" sound_close="UseActions/close_corpse" loot_quality_template="baseTemplate">

<lootcontainer id="61" count="0,2" size="4,4" sound_open="UseActions/open_corpse" sound_close="UseActions/close_corpse" loot_quality_template="baseTemplate">

<lootcontainer id="66" count="0,2" size="4,4" sound_open="UseActions/open_corpse" sound_close="UseActions/close_corpse" loot_quality_template="baseTemplate">

 

replace each of them with

 

 

<lootcontainer id="15" count="0,2" destroy_on_close="true" size="4,4" sound_open="UseActions/open_corpse" sound_close="UseActions/close_corpse" loot_quality_template="baseTemplate">

<lootcontainer id="17" count="0,2" destroy_on_close="true" size="4,4" sound_open="UseActions/open_corpse" sound_close="UseActions/close_corpse" loot_quality_template="baseTemplate">

<lootcontainer id="21" count="0,2" destroy_on_close="true" size="4,4" sound_open="UseActions/open_corpse" sound_close="UseActions/close_corpse" loot_quality_template="baseTemplate">

<lootcontainer id="38" count="0,2" destroy_on_close="true" size="4,4" sound_open="UseActions/open_corpse" sound_close="UseActions/close_corpse" loot_quality_template="baseTemplate">

<lootcontainer id="61" count="0,2" destroy_on_close="true" size="4,4" sound_open="UseActions/open_corpse" sound_close="UseActions/close_corpse" loot_quality_template="baseTemplate">

<lootcontainer id="66" count="0,2" destroy_on_close="true" size="4,4" sound_open="UseActions/open_corpse" sound_close="UseActions/close_corpse" loot_quality_template="baseTemplate">

 

 

 

save and close

 

 

replace the file located at for servers C:\Program Files (x86)\Steam\steamapps\common\7 Days to Die Dedicated Server\Data\Config\entityclasses.xml for sp/local C:\Program Files (x86)\Steam\steamapps\common\7 Days to Die\Data\Config\entityclasses.xml

 

with attached entityclasses.xml (rename entityclasses.txt to entityclasses.xml and replace the file)

 

[ATTACH]14375[/ATTACH]

 

 

enjoy and please report any problems

 

 

Also stallionsden Kindly ported the mod to SDX 6.0 https://7daystodie.com/forums/showthread.php?40620-Deccypher-s-Bag-Drop-Mod-Meets-SDX so if familiar with the SDX 6.0 way of modding you can still enjoy this mod.

 

==================Recommended Options ( less optimized but better immersion)=============

 

Options:

1/:to allow ragdoll effect add 3 second delay

 

after mod installed open entityclasses.xml

on zombie01 find

 

<property name="TimeStayAfterDeath" value="0.5" />

replace with

<property name="TimeStayAfterDeath" value="0.5" />

save and close entityclasses.xml

 

2/:enable gore on all bags

after mod install open blocks.xml

for each block id 2000,2001,2002,2003,2004 and 2005

find

</block>

before add

<property name="DowngradeBlock" value="GoreBlock1Prefab" />

repeate for each block 2000,2001,2002,2003,2004 and 2005

save and close.

entityclasses.txt

Link to comment
Share on other sites

When you say comment out, do you mean leave it there but set it to not do anything, or to delete the lines altogether?

 

you can delete it i normally comment them out incase i ever want to go back to vanillia

 

to comment out add <!-- at the begining of the line and --> at the end of the line

Link to comment
Share on other sites

The attachment from Guppy gives an error message:

 

"Invalid Attachment specified. If you followed a valid link, please notify the administrator"

 

 

On the mod itself, great idea, will definitely give it a try.

 

 

Edit: I was wondering, if it would be possible to use the zombie models as the world models for the containers, so you would be able to remove the zombie entity (also the corpses are entities, and count towards the max zombies) right at death, and put down the container instead. The container would of course be the same zombie as the one dropping it. You would need to make a separate container for each zombie variant though. This would probably affect the performance positively. If it even was possible to do in the first place.

 

One way could be to change the TimeStayAfterDeath to 1 or 0.

Link to comment
Share on other sites

The attachment issue is a forum issue; he put it in spoiler tags, but attachments don't work like that. So the one in the spoiler is supposed to be the one right below it.

 

Also, the general idea was to quickly remove entities and allow blocks instead, to keep the performance in check AND leave loot for more than 30 seconds. I think Dec was going to test for performance, but I also think he said he ran a horde using this and it was fine. I'm no expert, but I think the only two block zombies are the ones that you find on rooftops, etc, so you wouldn't be able to use the same model as a block container (because it doesn't exist) with just an XML mod.

 

I suspect that will all change when they include sleeper zombies, since they'll want it so that we don't know what's a corpse and what's a zombie, but we'll have to wait and see.

 

I could be wrong, I oft am.

Link to comment
Share on other sites

The attachment issue is a forum issue; he put it in spoiler tags, but attachments don't work like that. So the one in the spoiler is supposed to be the one right below it.

 

Also, the general idea was to quickly remove entities and allow blocks instead, to keep the performance in check AND leave loot for more than 30 seconds. I think Dec was going to test for performance, but I also think he said he ran a horde using this and it was fine. I'm no expert, but I think the only two block zombies are the ones that you find on rooftops, etc, so you wouldn't be able to use the same model as a block container (because it doesn't exist) with just an XML mod.

 

I suspect that will all change when they include sleeper zombies, since they'll want it so that we don't know what's a corpse and what's a zombie, but we'll have to wait and see.

 

I could be wrong, I oft am.

 

I think you are right.

 

As for the mod itself, it's a great idea, and removing the entities (zombies) and replacing them with blocks (containers) is probably a big improvement to game performance, depending on the situation. I would bet it helps everybody on a horde night. Provided the bodies disappear right away, of course.

Link to comment
Share on other sites

whats the attachment under - not everyone will like it but have seen this requested before, also big thanks to GUPPYCUR for pushing me yesterday to actually give this a try as you click on it and it goes to a page that says its been hidden or something lol

 

re worded it a bit to make more sense and removed spoiler tags from the attachment

 

- - - Updated - - -

 

Does this have much of an impact on performance? My horde days are pretty intense, and we would end up with several hundred bags laying around the base.

 

most ive done is 100 an no preformance drops as the bags are blocks not entities its just like you placing 100 or so random blocks on the ground, so 0 preformance drop

Link to comment
Share on other sites

The attachment from Guppy gives an error message:

 

"Invalid Attachment specified. If you followed a valid link, please notify the administrator"

 

 

On the mod itself, great idea, will definitely give it a try.

 

 

Edit: I was wondering, if it would be possible to use the zombie models as the world models for the containers, so you would be able to remove the zombie entity (also the corpses are entities, and count towards the max zombies) right at death, and put down the container instead. The container would of course be the same zombie as the one dropping it. You would need to make a separate container for each zombie variant though. This would probably affect the performance positively. If it even was possible to do in the first place.

 

One way could be to change the TimeStayAfterDeath to 1 or 0.

 

removed the spoiler tags so the atachment should work,

 

you could do that, you would have to change zbag01 and split it up into many more as that lootlist is used by many of the zombies.

 

you could change the timestayafterdeath to 1 or 0 but then you would miss out on the ragdoll and death animations

Link to comment
Share on other sites

The attachment issue is a forum issue; he put it in spoiler tags, but attachments don't work like that. So the one in the spoiler is supposed to be the one right below it.

 

Also, the general idea was to quickly remove entities and allow blocks instead, to keep the performance in check AND leave loot for more than 30 seconds. I think Dec was going to test for performance, but I also think he said he ran a horde using this and it was fine. I'm no expert, but I think the only two block zombies are the ones that you find on rooftops, etc, so you wouldn't be able to use the same model as a block container (because it doesn't exist) with just an XML mod.

 

I suspect that will all change when they include sleeper zombies, since they'll want it so that we don't know what's a corpse and what's a zombie, but we'll have to wait and see.

 

I could be wrong, I oft am.

 

thank guppy first file attachment didn't know it messed up if in spoiler tags fixed that,

 

yes general idea was to improve performance, and make it so reward for killing them remained after 30 seconds

 

tested upto 100 bags on the ground after a horde and a few extra spawns fps didnt drop ( there jus blocks so kinda knew it would be ok)

 

you could use the meshes from the diffrent zombies, but you woulkd haveto play around with the rotation as when you just use the mesh it will be standing maybe if i get boorde of building my trench in bartertowne today ill give it a play. but you could easily use the rooftop zombie corpse as it rotated right already,

 

if offical gore comes back or the sleepers get in it will require a tweak and ill update it. already tested it with gore as welll and its ok it just that your going to get gore 100% of the time, right not that causes too much of a performance drain so i left gore out on this one. as for sleepers i have not idea how there going to implement them so we will have to wait and see

Link to comment
Share on other sites

you could easily use the rooftop zombie corpse as it rotated right already,

 

To me, this would be enough, and feel much more immersive than bags. Even the bags are fine though, as they remove the weird rush to loot in the middle of a fight (in every MMO I have played, looting in the middle of a fight leads to a kick from the group), which is one of the big immersion breakers at the moment.

The decision by the pimps of keeping the bodies as entities is definitely a double-edged sword, as it allows the ragdolls and immersion because of the "realistic" corpse, but on the other hand they need to disappear into thin air. The gore blocks (the first skeleton bit the corpses turned into was fine) were in my opinion even worse. Maybe there would be a solution for the corpses to use less CPU-power, but at the moment your solution is the most perfect one, especially if you use a corpse (which ever it will be) instead of a bag. So thank for figuring this out and sharing it. :-)

Link to comment
Share on other sites

To me, this would be enough, and feel much more immersive than bags. Even the bags are fine though, as they remove the weird rush to loot in the middle of a fight (in every MMO I have played, looting in the middle of a fight leads to a kick from the group), which is one of the big immersion breakers at the moment.

The decision by the pimps of keeping the bodies as entities is definitely a double-edged sword, as it allows the ragdolls and immersion because of the "realistic" corpse, but on the other hand they need to disappear into thin air. The gore blocks (the first skeleton bit the corpses turned into was fine) were in my opinion even worse. Maybe there would be a solution for the corpses to use less CPU-power, but at the moment your solution is the most perfect one, especially if you use a corpse (which ever it will be) instead of a bag. So thank for figuring this out and sharing it. :-)

 

updates it now all bags will look like corpses and sound like them as you open/close them, ill play around with a new version of this tommorrow to make them look like the zombie you killed but for now it looks ok

Link to comment
Share on other sites

Finally got time to test the mod. Great job, and very immersive. No need to charge in panic to loot anymore while there's zombies still around trying to gnaw my ankles off. :-)

 

One thing I noticed is, that the dogs have TimeStayAfterDeath set to 5, but no container (naturally), and they really need to have a body left behind for the early game hides and bones for shivs.

Link to comment
Share on other sites

I'm curious what this will look like, can you take a screenie? I'm envisioning a bunch of zombie corpses all facing the same direction in a field, and "Children of the Corn" comes to mind. :)

 

even better jump on bartertowne and kill something, its in and working, was great after a hode didnt realize how much loot we were missing out on, and the fps was fine ( but i will post a video tonight for thoes who havent joined)

 

- - - Updated - - -

 

Finally got time to test the mod. Great job, and very immersive. No need to charge in panic to loot anymore while there's zombies still around trying to gnaw my ankles off. :-)

 

One thing I noticed is, that the dogs have TimeStayAfterDeath set to 5, but no container (naturally), and they really need to have a body left behind for the early game hides and bones for shivs.

 

good catch, most animales were set to 120, so i admit to a find and replace for the 60, im going to tweak it tonight so ill fix it there, and then update the attaachment

 

if you dont want to wait till tonight use replace the zombiedog in the entityclasses.xml with this one .

 

 

 

<entity_class name="zombiedog" >

<!-- todo extra properties need cleaned up -->

<property name="EntityType" value="Zombie" />

<property name="IsEnemyEntity" value="true" />

<!-- Mesh and class properties -->

<property name="Mesh" value="Zombies/zombieDogPrefab" />

<property name="ModelType" value="Standard" />

<property name="Parent" value="Enemies" />

<property name="RagdollEnabled" value="true" />

<property name="SurfaceCategory" value="organic" />

<property name="AttackTimeoutDay" value="1.5" /> <!-- in s -->

<property name="AttackTimeoutNight" value="1.1" />

<property name="Prefab" value="Dog" />

<property name="WalkType" value="0" />

<property name="HandItem" value="handZombieDog" />

<property name="Class" value="EntityZombieDog" />

<property name="AvatarController" value="AvatarZombieDogController" />

<property name="WanderSpeed" value="0.5" />

<property name="ApproachSpeed" value="1.6" />

<property name="NightWanderSpeed" value="0.3" />

<property name="NightApproachSpeed" value="1.6" />

<property name="PanicSpeed" value="1.6" />

<property name="CanClimbLadders" value="false" />

<property name="RotateToGround" value="true"/>

<property name="MaxHealth" value="100" />

<property name="SoundRandomTime" value="45.0" />

<property name="SoundAlertTime" value="25.0" />

<property name="SoundRandom" value="Enemies/Zombie_Dogs/zombiedogroam" />

<property name="SoundAlert" value="Enemies/Zombie_Dogs/zombiedogalert" />

<property name="SoundHurt" value="Enemies/Zombie_Dogs/zombiedogpain" />

<property name="SoundDeath" value="Enemies/Zombie_Dogs/zombiedogdeath" />

<property name="SoundAttack" value="Enemies/Zombie_Dogs/zombiedogattack" />

<property name="SoundSense" value="Enemies/Zombie_Dogs/zombiedogsense" />

<property name="SoundGiveUp" value="Enemies/Zombie_Dogs/zombiedoggiveup" />

<!--property name="LootListOnDeath" value="12" /--> <!-- Need to remove this when we want to harvest the entity ! -->

<property name="ExperienceGain" value="300"/>

<property name="MaxViewAngle" value="180" />

<property name="Immunity" value="sickness;disease;bleeding;wellness" />

<property name="Weight" value="70" />

<!-- AI properties -->

<property name="AITask-1" value="BreakDoor" />

<property name="AITask-2" value="BreakBlock" />

<property name="AITask-3" value="Territorial" param1="10" />

<property name="AITask-4" value="ApproachAndAttackTarget" param1="EntityPlayer" param2="20" />

<property name="AITask-5" value="ApproachAndAttackTarget" param1="EntityAnimalBear" />

<property name="AITask-6" value="ApproachAndAttackTarget" param1="EntityAnimalStag" />

<property name="AITask-7" value="ApproachSpot" />

<property name="AITask-8" value="Wander" />

<property name="AITarget-1" value="SetAsTargetIfHurt" param1="EntityPlayer" />

<property name="AITarget-2" value="BlockingTargetTask" />

<property name="AITarget-3" value="SetNearestEntityAsTarget" param1="EntityPlayer" />

<property name="AITarget-4" value="SetNearestEntityAsTarget" param1="EntityAnimalBear" />

<property name="AITarget-5" value="SetNearestEntityAsTarget" param1="EntityAnimalStag" />

<property name="PhysicsBody" value="zombieDog" />

<property name="CorpseBlock" value="animalGore"/>

<property name="CorpseBlockChance" value="0"/>

<property name="ParticleOnDestroy" value="blood_death" />

<property name="TimeStayAfterDeath" value="120" />

<!-- For harvesting -->

<property name="DeadBodyHitPoints" value="200" />

<drop event="Harvest" name="rottingFlesh" count="2" />

<drop event="Harvest" name="rottingFlesh" tool_category="Butcher" count="4" />

<drop event="Harvest" name="animalHide" tool_category="Butcher" count="2" />

<drop event="Destroy" name="animalFat" tool_category="Butcher" count="2" />

<drop event="Destroy" name="femur" tool_category="Butcher" count="4" />

</entity_class>

 

 

Link to comment
Share on other sites

Went and killed the whole hub city with spawns set to normal, without looting a single container. The FPS was great the whole time. Like Deccypher said, the mod doesn't lower the performance, but is actually quite a big boost.

 

Here's one shot for Guppy to see his "children", all nicely lined up... ;-)

Alpha_13.8_2016-02-22_17-48-45.thumb.jpg.95dd7ce7483b73a3732f614984f5908a.jpg

Link to comment
Share on other sites

Went and killed the whole hub city with spawns set to normal, without looting a single container. The FPS was great the whole time. Like Deccypher said, the mod doesn't lower the performance, but is actually quite a big boost.

 

Here's one shot for Guppy to see his "children", all nicely lined up... ;-)

[ATTACH=CONFIG]13321[/ATTACH]

 

if not in god mode and jsut playing normally they shouldnt be as lined up :) the way it work is the corpse head whould be pointing to the back of the dead zombie as the block is placed towards placer by default, i think bacase up in the air and they all ccomming after you they were all pointing the same direction. but with normal play and ragdoll effect most of the time the placement should be random, but i am tryign to play around with the block placment so its not always the same, ( diffrent bages rotated in diffrent ways)

Link to comment
Share on other sites

I like this idea but not sure how I would use it yet as my server runs massive hordes every night. I feel the loot would be way too much. You mentioned adding the plant grow property to vanish the bag after some time? Are you going too add this or make it optional?

 

you can add the followingto the bags to make them dissapear after a set time

 

 

<property class="PlantGrowing">

<property name="Next" value="air" />

<property name="GrowthRate" value="60" />

<property name="IsRandom" value="false" />

<property name="FertileLevel" value="1" />

</property>

 

 

 

on a 60 min day 1 tick is about 10 irl seconds to compare 60 is how long cotton takes to grow from cottonYoung to cotton.

 

will say this is untested untill tonight, sometimes addign a grow function to a loot container and/or making a lootcontainer from a grow function can cause a nullref. this should work ok but ill confirm tonight after some testing

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...