Jump to content

[MOD] Smart Containers


Carlzilla

Recommended Posts

It should work in multiplayer if everyone has it installed correctly, but it's untested as I don't play multiplayer and have no server on which to test it.

 

If you decide to give it a shot, let me know if it works OK.

 

I tested it on a client-side hosted game, I walked someone through the install process and had them connect.

 

They had the tooltips from your scripts, so I believe they installed it correctly. They could enter the smart containers and add or remove items using the vanilla method, but whenever they attempted to use the auto-store feature the items were removed from their inventory without being deposited in the smart containers. Also, when they encountered a locked smart container they would hear the locked sound upon trying to enter it, but still get in regardless of the lock state.

 

I'll setup a locally hosted dedicated server so I can install the mod to the server and client myself and more accurately report what is happening.

Link to comment
Share on other sites

I'll have to dig into it.

 

I don't really do multiplayer, so I don't generally write for multiplayer. If I can get it to work for multiplayer, awesome, but I'm probably not going to dump a whole lot of effort into it, especially with A15 right around the corner, and who knows what changes will need to be made then.

Link to comment
Share on other sites

No worries at all, don't spend any time on it. It was more of a curiosity how it worked for multiplayer.

 

As it stands, you can still use it very effectively in co-op multiplayer with everyone using dump boxes after their loot runs and the host using the auto-sort function to quickly and tidily put everything away for others.

Link to comment
Share on other sites

I'm leaving this here for my future reference because I WILL forget how I did this. Maybe it will help someone else out as well.

 

Okay, to expedite the creation of my auto-sort lists I extracted the block and item names from the rest of the xmls. I'm sure there is a better way, but I am a noob so this was my method. I am using Notepad++ with the XML Tools plugin.

 

 

  1. Go to the Mark function of Notepad++ and tick the 'Bookmark line' option
  2. Mark All: .*" name="(.*?)">.*
  3. Search > Bookmark > Remove Unmarked Lines
  4. Go to the Replace function of Notepad++ and change the Search Mode to Regular expression leave '. matches newline' unticked
  5. Replace All: .*" name="(.*?)">.* with $1\,
  6. Make sure Word wrap is ticked under the view options.
  7. Ctrl + Alt + Shift + L to linarize and the item/block names are listed for easily copying and pasting grouped things together.

 

Vanilla items as an example:

 

clubMaster, clubWood, clubIron, clubBarbed, clubSpiked, sledgehammer, torch, flashlight02, femur, boneShiv, huntingKnife, machete, gunPistol, gun44Magnum, gunSawedOffPumpShotgun, gunPumpShotgun, gunMP5, gunAK47, gunHuntingRifle, gunSniperRifle, gunRocketLauncher, blunderbuss, handMaster, handPlayer, handZombie, handZombie02, handBurningZombie, handCopZombie, vomitZombieProjectile, stingHornet, handZombieDog, handBear, zombieHandBear, stoneAxe, tazasStoneaxe, fireaxeIron, fireaxeSteel, pickaxeIron, pickaxeSteel, stoneShovel, shovelIron, shovelSteel, hoeIron, wrench, clawHammer, nailgun, chainsaw, auger, woodenBow, crossbow, 9mmBullet, 10mmBullet, 44MagBullet, 762mmBullet, shotgunShell, shotgunSlug, rocket, blunderbussAmmo, gasCan, arrow, ironArrow, steelArrow, flamingArrow, crossbowBolt, ironCrossbowBolt, steelCrossbowBolt, explodingCrossbowBolt, pipeBomb, dynamite, flare, rockSmall, turd, partsMaster, partsPistol_grip, partsPistol_receiver, partsPistol_parts, partsPistol_barrel, parts44Magnum_grip, parts44Magnum_cylinder, parts44Magnum_parts, parts44Magnum_frame, partsPumpShotgun_stockShort, partsPumpShotgun_receiver, partsPumpShotgun_parts, partsPumpShotgun_barrelShort, partsPumpShotgun_stock, partsPumpShotgun_barrel, partsMP5_stock, partsMP5_receiver, partsMP5_parts, partsMP5_barrel, partsAK47_stock, partsAK47_receiver, partsAK47_parts, partsAK47_barrel, partsHuntingRifle_stock, partsHuntingRifle_receiver, partsHuntingRifle_parts, partsHuntingRifle_barrel, partsSniperRifle_stock, partsSniperRifle_receiver, partsSniperRifle_parts, partsSniperRifle_barrel, partsRocketLauncher_stock, partsRocketLauncher_receiver, partsRocketLauncher_parts, partsRocketLauncher_barrel, partsHandlebars, partsChainsaw_parts, partsChainsaw_blade, partsAuger_parts, partsAuger_blade, minibikeChassis, minibikeSeat, minibikeWheels, padlock, minibikeHandlebars, shoppingBasketItem, plantFiberPants, plantFiberShirt, plantFiberHood, plantFiberShoes, plantFiberGloves, clothBoots, clothPants, clothJacket, clothHat, clothGloves, animalHideBoots, animalHideLegArmor, animalHideChestArmor, animalHideHood, animalHideGloves, leatherBoots, leatherGloves, leatherPants, leatherJacket, leatherHood, scrapBoots, scrapLegArmor, scrapChestArmor, scrapHelmet, scrapGloves, ironBoots, ironLegArmor, ironChestArmor, ironHelmet, ironGloves, militaryGloves, militaryHelmet, militaryBoots, militaryLegArmor, militaryVest, hazmatBoots, hazmatPants, hazmatShirt, hazmatGloves, hazmatMask, cowboyHat, blackCowboyHat, plantFiberHat, ballCap, skullCap, skullCapRed, skullCapBlue, skullCapGreen, skullCapBrown, skullCapBlack, miningHelmet, swatHelmet, footballHelmet, gasMask, shades, aviatorGoggles, goggles, nightvisionGoggles, cigar, cigarette, animalHidePoncho, bandana, bandanaRed, bandanaBlue, bandanaGreen, bandanaBrown, bandanaBlack, denimPants, blackDenimPants, redDenimPants, brownDenimPants, armyPants, tankTopWhite, tankTopRed, tankTopPurple, tankTopGreen, tankTopBlue, wornBoots, shirt, shirtRed, shirtBrown, shirtGreen, shirtBlue, shirtBlack, armyShirt, leatherDuster, pufferCoat, pufferCoatRed, pufferCoatGreen, pufferCoatBrown, pufferCoatBlack, backpackMedium, sweatshirt, sweatshirtRed, sweatshirtBrown, sweatshirtGreen, sweatshirtBlue, sweatshirtBlack, tshirtWhite, tshirtRed, tshirtBrown, tshirtGreen, tshirtBlue, tshirtBlack, splint, aloeCream, bandage, firstAidBandage, firstAidKit, bloodDrawKit, bloodBag, vitamins, painkillers, herbalAntibiotics, antibiotics, brokenGlass, foodHoney, foodYuccaFruit, foodYuccaJuice, canBeef, canChicken, canLamb, canCatfood, canDogfood, canChili, canMiso, canPasta, canPeas, canPears, canSoup, canStock, canTuna, canHam, canSalmon, corn, cornOnTheCob, cornMeal, cornBread, moldyBread, shamSandwich, rawMeat, rottingFlesh, charredMeat, grilledMeat, boiledMeat, meatStew, potato, blueberries, egg, eggboiled, blueberryPie, bakedPotato, baconAndEggs, mushrooms, vegetableStew, canMurkyWater, canBoiledWater, bottledRiverWater, bottledWater, goldenRodTea, redTea, coffee, beer, grainAlcohol, schematicMaster, invisibleRecipesForRepairCost, clubSpikedSchematic, sledgehammerSchematic, huntingKnifeBook, crossbowSchematic, pistolBook, theEnforcerMagazine, sawedoffPumpShotgunSchematic, pumpShotgunSchematic, smgSchematics, ak47Schematic, huntingRifleSchematic, sniperRifleSchematic, rocketLauncherSchematic, flamingArrowSchematic, explodingCrossbowBoltSchematic, ammunitionNationBook, 9mmBulletSchematic, 10mmBulletSchematic, 762mmBulletSchematic, shotgunShellSchematic, shotgunSlugSchematic, wrenchSchematic, clawHammerSchematic, gasCanSchematic, augerSchematic, chainsawSchematic, firstAidKitSchematic, herbalAntibioticsRecipe, setInConcrete, theRiddleOfSteel, handleBarsSchematic, minibikesForDumb♥♥♥♥s, leatherTanning, leatherBootsSchematic, leatherPantsSchematic, leatherJacketSchematic, leatherHoodSchematic, leatherGlovesSchematic, macDyverBook, ironHelmetSchematic, ironChestArmorSchematic, ironLegArmorSchematic, ironBootsSchematic, ironGlovesSchematic, questMaster, challengeQuestMaster, treasureQuestMaster, q_basicSurvival, qc_silenceofthelambs, qc_drunkanddisorderly, qc_nurseyoubacktohealth, qc_copanattitude, qc_dogdaysareover, qc_itsbitsyspider, qc_ladykiller, qc_maneater, qc_imalumberjackandimokay, qc_yournothingspecial, qc_killthewabbit, qc_nailsomechicks, qc_thatlldopig, qc_stagparty, qc_dontfeedthebears, qc_buythefarm, qt_taylor, qt_nickole, qt_stephan, qt_jennifer, qt_claude, qt_sarah, qt_raphael, yuccaFibers, wood, crushedSand, ironFragment, scrapIron, forgedIron, shortMetalPipe, forgedSteel, oilShale, animalHide, leather, scrapBrass, scrapLead, clayLump, scrapCopper" material="copper" mesh_file="Items/Crafting/scrap_copper" hold_type="7, cobblestones, cement, concreteMix, cloth, paper, book, militaryFiber, feather, ironArrowHead, steelArrowHead, coal, potassiumNitratePowder, gunPowder, buckshot, bulletCasing, bulletTip, nail, rocketTip, rocketCasing, repairKit, oil, animalFat, tallow, bioFuel, canEmpty, emptyJar, bucket, bucketWater, masonJar, hubcap, airFilter, candyTin, doorKnob, candleStick, radiator, fishingWeight, trophy, trophy2, trophy3, cornSeed, potatoSeed, blueberrySeed, coffeeBeans, cottonSeed, goldenrodSeed, pineSeed, mapleSeed, blueSpruceSeed, candle, smallEngine, carBattery, scrapCable, headlight, casinoCoin, glue, ductTape, spring, cookingGrill, beaker, bellows, anvil, calipers, toolAndDieSet, unit_iron, unit_brass, unit_lead, unit_glass, unit_stone, unit_clay

 

Link to comment
Share on other sites

  • 3 weeks later...
No. It requires SDX. It's a custom block class.

 

I've put SDX on my game successfully and installed yours and other mods, however I'm having trouble with it. Instead of an fridge, or medicine cabinet, I'm getting blocks. By that I mean to say I try to place down the fridge, and get a block of earth instead. Other items are stone, sand, etc. What's wrong with it?

Link to comment
Share on other sites

  • 3 weeks later...
SDX doesn't officially support A15 yet.

 

If you tried in 14.7, I'd need to see your build log and your game log to figure it out.

Sry, life got in the way. No thanks yet, then. I'm going to stick with the beta until it becomes official. Guess I'll wait for everyone to get done catching up to everyone else. Appreciate the reply.

Link to comment
Share on other sites

  • 11 months later...

Any chance of this mod getting updated for 16.3?

 

Just attempted to install it via the latest SDX build and got this for output:

 

EVENT: Begin task: Backup game files
Copy: C:\Steam\steamapps\common\7 Days To Die\Data\Config -> C:\Users\Shelgeyr\AppData\Roaming\7DaysToDie\SDX\Backups\7 Days To Die\Data\Config
Copy: C:\Steam\steamapps\common\7 Days To Die\7DaysToDie_Data\Managed\Assembly-CSharp.dll -> C:\Users\Shelgeyr\AppData\Roaming\7DaysToDie\SDX\Backups\7 Days To Die\7DaysToDie_Data\Managed\Assembly-CSharp.dll
EVENT: Begin task: Import UnityEngine.dll
EVENT: Begin task: Deobfuscate Assembly Strings
EVENT: Begin task: Patch game code
INFO: Inject: System.Void GameManager::Awake() into type(SDX.Payload.Entry, SDX.Payload).Setup at start
INFO: Inject: System.Void GameManager::StartGame() into type(SDX.Payload.ModEngine, SDX.Payload).StartupModScripts at start
WARN: Cannot patch load for type: RagdollAsset
WARN: Cannot patch load for type: RagdollAsset
WARN: Cannot patch load for type: RagdollAsset
WARN: Cannot patch load for type: RagdollAsset
WARN: Cannot patch load for type: RagdollAsset
Patched 113 hooks
Saving...
Done.
EVENT: Begin task: Deobfuscate game code
Execute: C:\Users\Shelgeyr\AppData\Roaming\7DaysToDie\SDX/Targets\7DaysToDie\Deobfuscator\de4dot.exe "C:\Users\Shelgeyr\AppData\Roaming\7DaysToDie\SDX\Backups\7 Days To Die\7DaysToDie_Data/Managed/EntryPatched.dll" --dont-rename -o "C:\Users\Shelgeyr\AppData\Roaming\7DaysToDie\SDX\Backups\7 Days To Die\7DaysToDie_Data/Managed/Deobf_Part1.dll"
EVENT: Begin task: Compile mod patcher scripts
Dir not found: C:\Users\Shelgeyr\AppData\Roaming\7DaysToDie\SDX/Targets\7DaysToDie\Mods\SmartContainers\PatchScripts
No PatchScripts.
EVENT: Begin task: Copy payload dlls
Copy file: C:\Users\Shelgeyr\AppData\Roaming\7DaysToDie\SDX\SDX.Core.dll to C:\Steam\steamapps\common\7 Days To Die/7DaysToDie_Data/Managed\SDX.Core.dll
Copy file: C:\Users\Shelgeyr\AppData\Roaming\7DaysToDie\SDX\SDX.Payload.dll to C:\Steam\steamapps\common\7 Days To Die/7DaysToDie_Data/Managed\SDX.Payload.dll
EVENT: Begin task: Compile mod scripts
Compiling Mods.dll...
INFO: Built in 220ms
c:\Users\Shelgeyr\AppData\Roaming\7DaysToDie\SDX\Targets\7DaysToDie\Mods\SmartContainers\Scripts\BlockSmartLoot.cs(16,13): error CS1501: No overload for method 'ShowTooltip' takes '1' arguments
c:\Users\Shelgeyr\AppData\Roaming\7DaysToDie\SDX\Targets\7DaysToDie\Mods\SmartContainers\Scripts\BlockSmartLoot.cs(69,36): error CS1501: No overload for method 'GetItemClass' takes '1' arguments
c:\Users\Shelgeyr\AppData\Roaming\7DaysToDie\SDX\Targets\7DaysToDie\Mods\SmartContainers\Scripts\BlockSmartLoot.cs(125,25): error CS1501: No overload for method 'SetSlot' takes '2' arguments
c:\Users\Shelgeyr\AppData\Roaming\7DaysToDie\SDX\Targets\7DaysToDie\Mods\SmartContainers\Scripts\BlockSmartLoot.cs(138,25): error CS1501: No overload for method 'SetSlot' takes '2' arguments
ERROR: Failed to compile Mods.dll
ERROR: Task Compile mod scripts failed
EVENT: Action completed at: 9/11/2017 10:07:47 and took 14.1 seconds

Link to comment
Share on other sites

Any chance of this mod getting updated for 16.3?

 

 

I have a slightly different version that I use on my 16.3 game.

Instead of configuring each each item that will be added in the XML, the container will just add more of the same item that is already there when you press 'shift'.

 

Let say you have 5 arrows in a container and 20 in your inventory, when using shift it will transfer all arrows from inventory to container. I find it more flexible to set up your container content in game rather than in the xml files.

 

This is the content of the file "Scripts\BlockSmartLoot.cs":

 

using System;
using System.Collections.Generic;
using System.Text;
using UnityEngine;

class BlockSmartLoot : BlockSecureLoot
{
   private BlockActivationCommand[] XX = new BlockActivationCommand[] { new BlockActivationCommand("Search", "search", false), new BlockActivationCommand("lock", "lock", false), new BlockActivationCommand("unlock", "unlock", false), new BlockActivationCommand("keypad", "keypad", false) };
   DateTime dteNextToolTipDisplayTime;
   List<ItemClass> itemList;

   private void DisplayToolTipText(string str)
   {
       if (DateTime.Now > dteNextToolTipDisplayTime)
       {
		EntityPlayerLocal entity = GameManager.Instance.World.GetLocalPlayer();
		GameManager.ShowTooltip(entity, str);
           dteNextToolTipDisplayTime = DateTime.Now.AddSeconds(5);
       }
   }

   public override bool OnBlockActivated(int _indexInBlockActivationCommands, WorldBase _world, int _cIdx, Vector3i _blockPos, BlockValue _blockValue, EntityAlive _player)
   {
	bool ret = base.OnBlockActivated(_indexInBlockActivationCommands, _world, _cIdx, _blockPos, _blockValue, _player);
       global::TileEntitySecureLootContainer entityLootContainer = _world.GetTileEntity(_cIdx, _blockPos) as global::TileEntitySecureLootContainer;
	if(ret)
	{
		if(_indexInBlockActivationCommands == 0 && Input.GetKey(KeyCode.LeftShift))
		{
			GetItemList(entityLootContainer);
			StoreItems((EntityPlayer)_player, entityLootContainer);
		}
	}
       return ret;
   }

   public override string GetActivationText(WorldBase _world, BlockValue _blockValue, int _clrIdx, Vector3i _blockPos, EntityAlive _entityFocusing)
   {
	TileEntitySecureLootContainer entityLootContainer = _world.GetTileEntity(_clrIdx, _blockPos) as TileEntitySecureLootContainer;
	if (entityLootContainer == null)
       {
		return string.Empty;
       }
	string @string = global::GamePrefs.GetString(global::EnumGamePrefs.PlayerId);
	global::PersistentPlayerData playerData = _world.GetGameManager().GetPersistentPlayerList().GetPlayerData(entityLootContainer.GetOwner());
	if (entityLootContainer.IsOwner(@string))
       {
		global::PlayerActionsLocal playerInput = ((global::EntityPlayerLocal)_entityFocusing).playerInput;
	    string keybindString = GUI_2.UIUtils.GetKeybindString(playerInput.Activate, playerInput.PermanentActions.Activate);
		return string.Format(global::Localization.Get("actionSmartLoot", string.Empty), keybindString);
	}
	else
	{
		return base.GetActivationText(_world, _blockValue, _clrIdx, _blockPos, _entityFocusing);
	}
   }

   private void GetItemList(TileEntitySecureLootContainer entityLootContainer)
   {
       itemList = new List<ItemClass>();
       itemList.Clear();
	foreach (ItemStack thisStack in entityLootContainer.items)
       {
           ItemClass iValue = ItemClass.GetForId(thisStack.itemValue.type);
           if (!itemList.Contains(iValue))
           {
			itemList.Add(iValue);
		}
	}
   }

   private void StoreItems(EntityPlayer _player, TileEntitySecureLootContainer entityLootContainer)
   {
       ItemStack[] invStack = _player.bag.GetSlots();
       int iCount = 0;
       int idxCount = 0;

       for (int i = 0; i < (int)invStack.Length; i++)
       {

           if (itemList.Contains(ItemClass.GetForId(invStack[i].itemValue.type)))
           {
               List<ItemStack> isList = new List<ItemStack>();
               isList.Clear();
               isList = IStack(invStack[i], entityLootContainer);
               iCount = iCount + invStack[i].count;

               if (isList.Count > 0)
               {
                   while (invStack[i].count > 0)
                   {
                       foreach (ItemStack iStack in isList)
                       {
                           while (iStack.count < ItemClass.GetForId(iStack.itemValue.type).Stacknumber.Value)
						{
                               iStack.count = iStack.count + 1;
                               invStack[i].count = invStack[i].count - 1;
                               if (invStack[i].count == 0)
                               {
                                   break;
                               }
                           }

                           idxCount = idxCount + 1;
                           if (invStack[i].count == 0)
                           {
                               break;
                           }
                       }
                       if (idxCount >= isList.Count)
                       {
                           break;
                       }
                   }

                   if (!entityLootContainer.AddItem(invStack[i]))
                   {
                       DisplayToolTipText(global::Localization.Get("containerFull", string.Empty));
                       break;
                   }
                   else
                   {
                       _player.bag.SetSlot(i, ItemStack.Empty, true);
                   }
               }
               else
               {
                   if (!entityLootContainer.AddItem(invStack[i]))
                   {
                       DisplayToolTipText(global::Localization.Get("containerFull", string.Empty));
                       break;
                   }
                   else
                   {
                       _player.bag.SetSlot(i, ItemStack.Empty, true);
                   }
               }
           }
       }

       if (iCount > 0)
       {
           DisplayToolTipText(string.Format(global::Localization.Get("itemStored", string.Empty), iCount.ToString()));
       }
	else
	{
		DisplayToolTipText("Access Granted.");
	}

   }

   private List<ItemStack> IStack (ItemStack iStack, TileEntitySecureLootContainer entityLootContainer)
   {
       List<ItemStack> isList = new List<ItemStack>();
       isList.Clear();

       foreach (ItemStack thisStack in entityLootContainer.items)
       {
           if (thisStack.itemValue.type == iStack.itemValue.type)
           {
               isList.Add(thisStack);
           }
       }
       return isList;
   }
}


 

If you don't want to use this code, I have ported the original mod to 16.3 a few post below.

Link to comment
Share on other sites

for the love of god, please update this to 16.3! as for the user cde, what if someone pulls all the arrows out...then the chest would kinda suck because it won't work anymore right?

 

1) Here is the original mod ported to 16.3 vanilla: SmartContainers.zip

I have removed some of the container as the model was not quite right anymore. I also fixed the count of item in the tooltip as it was wrong.

 

2) Here is my modified version in 16.3 vanilla: SmartContainers_v2.zip

 

My modification just remove the need of xml coded list of item (ItemList property), you can put any item in any of the smart container and automatically fill them up with more of the same item. Or use the container as normal whether there is item or not in it.

 

In this version I just converted (as an example) all 'SecureLoot' block into 'SmartLoot' as there is no need for specific configuration list for each container.

Link to comment
Share on other sites

question. Say i do put arrows in a chest. then someone else comes in and takes all the arrows. When i get back to the chest, will it still automatically take all my arrows or will I have to manually put an arrow back in to do it again?

 

You have to put back at least one arrow for it to work. It is just based on the current content of the chest.

Link to comment
Share on other sites

You have to put back at least one arrow for it to work. It is just based on the current content of the chest.

1) Could you make it so that the chest remembers what was in it when all is removed? or perhaps make it so that the chest locks at least 1 arrow to it never to be taken out?

 

If you could do that, this would be a real piece of work. as is though, having to stop and manually remove 1 arrow from a stack before i can take the stack slows down the process it was suppose to speed up.

 

Hal's smart inventory is able to remember things. So it's possible. I just don't have the ability.

 

2) Could you make it so that while holding Q or something, chest 3 blocks away automatically pull my inventory? Like i want arrows to just move themselves when i'm maybe 2-3 blocks close to the chest. Without having to open the chest.

 

This way, i can walk in the middle of my storage vault and just press Q and have like 6 different chest fill instantly.

 

Note: If you do all this you should make a new thread and call it your own. The OP seems to have left this mod awhile ago.

Link to comment
Share on other sites

1) Could you make it so that the chest remembers what was in it when all is removed? or perhaps make it so that the chest locks at least 1 arrow to it never to be taken out?

 

If you could do that, this would be a real piece of work. as is though, having to stop and manually remove 1 arrow from a stack before i can take the stack slows down the process it was suppose to speed up.

 

Hal's smart inventory is able to remember things. So it's possible. I just don't have the ability.

 

2) Could you make it so that while holding Q or something, chest 3 blocks away automatically pull my inventory? Like i want arrows to just move themselves when i'm maybe 2-3 blocks close to the chest. Without having to open the chest.

 

This way, i can walk in the middle of my storage vault and just press Q and have like 6 different chest fill instantly.

 

Note: If you do all this you should make a new thread and call it your own. The OP seems to have left this mod awhile ago.

 

Sound like neat ideas, I will see what I can do when have time.

Link to comment
Share on other sites

Sound like neat ideas, I will see what I can do when have time.

It might be easier to ignore #1 and do this instead:

 

Right now I would open a chest, put an arrow in, and forget about it. I just shift-e and all is well. Until all the arrows get pulled out. Then the system fails until I correct it.

 

So let's go back, and put an arrow in again. This time we hit a hot-key and the game prompts us to name and save a profile. We name it "ammo" and save it. Then apply it to this chest.

 

The next time i shift-e the chest, the mod doesn't check the chest for like items, but the profile instead. Which is some kind of text file that updates with each new save we make. Now it doesn't matter if I pull all the arrows out, because the mod no longer depends on what's in the chest; only on what is in the text file.

 

Sounds awesome right?

Link to comment
Share on other sites

Big problem: Using CDE's 16.3 vanilla version of this mod has a multiplayer issue. It works, but the chest are locked to the owner of the chest. When the owner holds E and unlocks it, other players still can't open them. It still says you are not the owner.

 

Otherwise, it seems to work on multiplayer. if each player creates their own box the mod does work as intended. The above issue needs to be fixed though to make this valuable to co-op players.

 

One thing i didn't try yet, was destroying the lock.

Link to comment
Share on other sites

Big problem: Using CDE's 16.3 vanilla version of this mod has a multiplayer issue. It works, but the chest are locked to the owner of the chest. When the owner holds E and unlocks it, other players still can't open them. It still says you are not the owner.

 

Otherwise, it seems to work on multiplayer. if each player creates their own box the mod does work as intended. The above issue needs to be fixed though to make this valuable to co-op players.

 

One thing i didn't try yet, was destroying the lock.

 

Hi there, I am not playing in multiplayer so I don't have this issue.

I need to figure out what function to call in order to grant access in multiplayer context.

Give me some time and I will figure it out.

 

Update:

 

I think I got it, at line 46 of BlockSmartLoot.cs replace "IsOwner" by "IsUserAllowed" and compile again with SDX.

I don't have mutilple player to test, so let me know.

Link to comment
Share on other sites

I've been hoping someone would update this lovely mod. I randomly asked if someone could create a mod like this and Carlzilla was kind enough to do so. It was the best thing since sliced bread. Playing without this mod has been painful.

 

Thanks for the update cde2006, I'll setup my server this weekend and let you know if the change from IsOwner to IsUserAllowed makes it viable for co-op.

Link to comment
Share on other sites

Archived

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

×
×
  • Create New...