zetake Posted August 6, 2019 Share Posted August 6, 2019 Hi, I can put Custom Items on Shelves and take them back, but Shelf doesn't display their textures... My guess is it doesn't take atlas from mod, but I don't know how to solve this or from where to begin... Any ideas? Link to comment Share on other sites More sharing options...
zetake Posted August 7, 2019 Author Share Posted August 7, 2019 Fn GetInventoryItemAtlas(imagename) called from fn SetImage(inst, ent, slot) returns "images/inventoryimages_2.xml" instead of Custom Item Atlas... Link to comment Share on other sites More sharing options...
zetake Posted August 7, 2019 Author Share Posted August 7, 2019 And when I added correct atlas, AnimState can't access it... -.- "Could not find anim build OUTOFSPACE" Lately I get the feeling that modding is not so much supported... Link to comment Share on other sites More sharing options...
zetake Posted August 7, 2019 Author Share Posted August 7, 2019 I managed to do it in sorf of different way, but it works... Spoiler I made another idle animation for displaying items on shelves. (With different pivot_y) in custom prefab fn() inst.bankname = "name_of_bank" inst.buildname = "name_of_build" in modmain Spoiler local function SetImage(inst, ent, slot) local src = ent local bank = nil local build = nil if src ~= nil and src.components.inventoryitem ~= nil then build = #(ent.buildname or "") > 0 and ent.buildname bank = #(ent.bankname or "") > 0 and ent.bankname end if build ~= nil and bank ~= nil then inst.AnimState:OverrideSymbol(slot, build, bank) inst.imagename = src ~= nil or "" else inst.imagename = "" inst.AnimState:ClearOverrideSymbol(slot) end end AddClassPostConstruct("components/shelfer", function(self, inst) if self.buildandbank == nil then -- to prevent running copies of this in this mod or other ones local SetArt = self.SetArt function self:SetArt() SetArt(self) local item = self.shelf.components.container:GetItemInSlot(self.slotindex) if item and item.buildname ~= nil and item.bankname ~= nil then SetImage(self.shelf, item, self.slot) self.inst:SetPrefabNameOverride(item.components.inspectable.nameoverride or item.prefab) end end self.buildandbank = true -- to prevent running copies of this in this mod or other ones end end) So, mister Ultroman, it is okay to overrite it like this? Link to comment Share on other sites More sharing options...
Guest Posted August 7, 2019 Share Posted August 7, 2019 On 8/7/2019 at 11:47 AM, zetake said: I managed to do it in sorf of different way, but it works... Reveal hidden contents I made another idle animation for displaying items on shelves. (With different pivot_y) in custom prefab fn() inst.bankname = "name_of_bank" inst.buildname = "name_of_build" in modmain Reveal hidden contents local function SetImage(inst, ent, slot) local src = ent local bank = nil local build = nil if src ~= nil and src.components.inventoryitem ~= nil then build = #(ent.buildname or "") > 0 and ent.buildname bank = #(ent.bankname or "") > 0 and ent.bankname end if build ~= nil and bank ~= nil then inst.AnimState:OverrideSymbol(slot, build, bank) inst.imagename = src ~= nil or "" else inst.imagename = "" inst.AnimState:ClearOverrideSymbol(slot) end end AddClassPostConstruct("components/shelfer", function(self, inst) if self.buildandbank == nil then -- to prevent running copies of this in this mod or other ones local SetArt = self.SetArt function self:SetArt() SetArt(self) local item = self.shelf.components.container:GetItemInSlot(self.slotindex) if item and item.buildname ~= nil and item.bankname ~= nil then SetImage(self.shelf, item, self.slot) self.inst:SetPrefabNameOverride(item.components.inspectable.nameoverride or item.prefab) end end self.buildandbank = true -- to prevent running copies of this in this mod or other ones end end) So, mister Ultroman, it is okay to overrite it like this? Oof, I wish I had found this post sooner to help you with this before you went through so much trouble. Klei actually (albeit possibly unintentionally) implemented a way to add shelf art for modded items awhile back through a simple override which they made to use for items with differing appearence depending on world (ex. logs, snakeskin, bannanas etc.). If memory serves, the line is something like "inst.shelfart = youranimfolder/yourprefabsanim", which you then put in your prefabs main function. You can just check the prefabs for the formerly mentioned items to get the exact line if I'm wrong, but this did the trick for me in a still currently unreleased mod of mine that I should probably get back to at some point. Hope this helped! EDIT: Ignore this. When I wrote this I was less knowledgable about modding and didn't know exactly how shelfer worked. Turns out the only reason this solution worked for me was because the image I wanted was already in inventoryimages.tex at the time so it was really using that instead of mine. Apologies to whomever I confused with this. Link to comment Share on other sites More sharing options...
zetake Posted August 8, 2019 Author Share Posted August 8, 2019 It doesn't work for me... shelfart is just alternative imagename... And like I said: in my case AnimState can't access atlas from my mod. So, animation instead of atlas and texture is my way... Moreover I have more than 1 item texture in texture/animation... Thus, it requires two names not one the same... Link to comment Share on other sites More sharing options...
Ultroman Posted August 9, 2019 Share Posted August 9, 2019 I have no idea about any of this. I've never worked with mods messing with animations, characters or items. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.
Please be aware that the content of this thread may be outdated and no longer applicable.