Hello, I am using your scripts in my mod and I want to ask permission to upload it on the bethesda.net, because that is the only way to download mods on consoles.
Hey! Thank you for making this, it's been really useful to me.
I have a question to ask, if you're still around here.
I'm trying to extend the book sorting outwards to notes, journals and spell books, and I ran into a little problem. I can get the system to function well, but I had to use formlists and it runs pretty slow. This is what that section looks like right now:
Spoiler:
Show
elseIf akBaseItem as book if akBaseItem.hasKeyWord((master as _sgaAutosortMasterMazz).KeywordBook01) || akBaseItem.hasKeyWord((master as _sgaAutosortMasterMazz).KeywordBook02) || akBaseItem.hasKeyWord((master as _sgaAutosortMasterMazz).KeywordBook03) || akBaseItem.hasKeyWord((master as _sgaAutosortMasterMazz).KeywordBook04) || akBaseItem.hasKeyWord((master as _sgaAutosortMasterMazz).KeywordBook05) || akBaseItem.hasKeyWord((master as _sgaAutosortMasterMazz).KeywordSpell) self.sortItem(akBaseItem, aiItemCount, (master as _sgaAutosortMasterMazz).ChestBookSpell) return else int i = 0 while i < ListBookUniques.getsize() if ListBookUniques.getat(i) == akBaseItem self.sortItem(akBaseItem, aiItemCount, (master as _sgaAutosortMasterMazz).ChestBookUnique) return endIf i += 1 endWhile i = 0 while i < ListBookNotes.getsize() if ListBookNotes.getat(i) == akBaseItem self.sortItem(akBaseItem, aiItemCount, (master as _sgaAutosortMasterMazz).ChestBookNote) return endIf i += 1 endWhile i = 0 while i < ListBookJournals.getsize() if ListBookJournals.getat(i) == akBaseItem self.sortItem(akBaseItem, aiItemCount, (master as _sgaAutosortMasterMazz).ChestBookJournal) return endIf i += 1 endWhile endIf self.sortItem(akBaseItem, aiItemCount, (master as _sgaAutosortMasterMazz).ChestBook) return
I have two questions really: 1. Can I sort books by anything other then the 3 ways you mentioned? The UI menu has markers for notes/scrolls/books/spell tomes, but the keywords for books are really limited and formlists take too much time to iterate through for each book. There is a data type thing in the book entries, but I don't know if that's a possible option. Adding more keywords is out since it's direct modification of the book items.
2. Can I possibly run the script in a way that the books are first sorted into the book chest, and then sorted again based on the other if statements? This would speed up the clearing of the entry chest and offload it outside the player's view. I tried moving the last sorting line to the beginning, but the items would only hit the first chest and then stop, even without a return statement.
Well, SKSE has GetSpell() that allows you to check if a book is associated with a spell, which in turn tells you if it is a spell book. SKSE also has GetWorldModelPath, which returns the model of the object. Since there are only about 5 different models for notes, this can be used to filter out notes. If a book is neither note nor spell book, then it must be an ordinary book.
Awesome, the second thing should actually be all I need, as notes only have 5-6 as you mentioned and journals 3-4, at least before mods. Spell and skill books actually have enough keywords to work normally, as you can see in that first grouped IF statement.
One more question, how do I go about using that SKSE command? Would you mind writing a short example? I'm not sure how to add that function and/or how to incorporate SKSE into the scripts, i.e. if I need to add anything to the header parts of the script itself.
I'd also be cool with you pointing me in the right direction for SKSE tutorial stuff instead.
You need to manualy install SKSE and make sure the scripts\source folder from the SKSE zip-archive is added to your Data folder. Replace files when prompted. After you've done that, you are able to use SKSE functions and events, just like you would use normal functions/events. The creation kit wiki has lists of all functions and events.
Okay, that much I understood/saw from some googling.
I'll have to mess around with the functions some, I'm not quite sure the logic I'll need to use GetWorldWorldPath as a search method, but I'll play with it some and see where I get.
Can I ask, what does the formlists do? I thought they were coving items that didn't have keywords or correct keywords, but in your test cell, I see your lists also include items that have correct keywords.
Also, is the only purpose for the pullbar is to get sorted items back to the base chest? Thanks!
Iirc, formlists are used to separate things that share the same keyword. Ores and ingots both have OreIngot keyword, but ingots cannot be melted and ores cannot be used in the forge for example.
Is it possible for me to do the same with books for Notes, Recipe, Journal categories? I don't care if it's a little slow checking form lists. I am learning papyrus from scratch, so, It's taking me like a minute to learn
Just wanted to say a thanks for this, I am new to modding and was able to use this guide and scripts to create a plugin(for personal use) for Elysium Estate to auto sort items i want sorted.
Thank you so much for sharing this Sjogga! It's a key feature in Ruins of Rkund, with all of our scripted unique displays integrated into it We did add one feature to the system that may interest you - overrides. The Override system allows users to redefine the sorting rules in-game at any time (if for example you wanted books to show up as firewood etc), additionally the override system can be used to integrate any content that is missing important data (keywords etc) or mod-added items that don't quite fit vanilla conventions. If you get a chance to check it out, please let me know your thoughts
I am testing things out in the esp provided. However, I noticed that if I wish to use the grindstone, blacksmith bench, enchanter, I don't seem to have access to either weapons nor armor to modify. Actual crafting items are available such as ingots to make a weapon, or leather to make armor, soul gems, but not the actual item to "enhance". Seems like weapons and armor so far not available at crafting stations? Is that intended?
Yes. Any items added while acivating a crafting station gets sent back to its container. If armor and weapons would be added alongside soulgems while enchanting, the newly enchanted item would get sent back to its chest when you were done.
Thanks for the quick reply but what I'm encountering is that the weapon (or armor) is not available at the workstation. The option to pull from the armor or weapon chest is not there. I have to have that weapon or armor in my own player inventory for it to be available at crafting station. So, basically, the player has to have the weapon or armor on them to craft, rather than it just being available (as are the crafting materials) at the stations?That's the correct way it works?
Great sorting mod. Thanks for making it available to modders.
Another question. Your instructions state that a unique container for every sorted category is not necessary; that its possible to merge categories.I believe you give as an example that you merged coins and jewelry in to one container. Would modifying the script attached to the sorted containers be required in order to merge categories? For instances, if I want all armor to go in to one container as an example?How exactly is that accomplished?
Hoping someone sees this here but I'm having trouble setting the script properties on the containers it says in the instuctions to
" Press properties. There are three different entries here: - BypassGlobalCheck : Setting this to TRUE turns this container into a Sorting Chest - BypassPlayerCheck : Setting this to TRUE turns this container into a Master Sorting Chest if BypassGlobalCheck is also TRUE. You generally only want one of these. " But I just can't set these in the creation kit hitting edit just sets it to False with no option to set them to True so all I get is False and <<efault>>
How do i add the container script to check another formlist? I keep getting errors on it! Im not awesome at scripting though, i did a copy and paste of a section that looked like what i needed, filled in the right lists from the master list (which worked fine) ( im making a list for alcohol only)
elseif(akBaseItem.hasKeyWord((master as _sgaAutosortMaster).Keywordfood)) sortItem(akBaseItem, aiItemCount, (master as _sgaAutosortMaster).ChestCookedfood) return else while (j<ListAlochol.getsize()) if(ListItemsSmithing.getat(j) == akBaseItem) sortItem(akBaseItem, aiItemCount, (master as _sgaAutosortMaster).ChestAlochol) endIf j+=1 endWhile
sortItem(akBaseItem, 99, (master as _sgaAutosortMaster).ChestCookedfood) endIf
i keep getting "mismatched input 'elseif' expecting 'endevent
Hi there! Just starting to get this all setup and it seems fairly straightforward. Now my question is this and forgive me if it dosent make sense. What i have setup in the house mod im making is themed storage thoughout the house. For example a case of firebrand wine is my alcohol storage. There is an activator over the firebrand case which has the dummylinkstorage script on it. Then its linked to a container which the player cant see. Now, will the autosort work with themed storage? Ill place my master sorting chest somewhere in the house, and say i have a few different types of wine and ale. The chest it goes to will get sorted. But can i link the alcohol sorted chest with the chest for the themed storage? Making a "middle man" in a way. So, i place wine/ale in master sorting chest, it goes to the sub sorting chest then to the themed chest and then finally accessed by the activator in the house. is that possible? hope that makes sense.
Edit: After about an hour of trial and error it works! If you use themed storage just point the chest location to the chest you have linked from the themed storage activator. sweet!
82 comments
I have a question to ask, if you're still around here.
I'm trying to extend the book sorting outwards to notes, journals and spell books, and I ran into a little problem. I can get the system to function well, but I had to use formlists and it runs pretty slow. This is what that section looks like right now:
elseIf akBaseItem as book
if akBaseItem.hasKeyWord((master as _sgaAutosortMasterMazz).KeywordBook01) || akBaseItem.hasKeyWord((master as _sgaAutosortMasterMazz).KeywordBook02) || akBaseItem.hasKeyWord((master as _sgaAutosortMasterMazz).KeywordBook03) || akBaseItem.hasKeyWord((master as _sgaAutosortMasterMazz).KeywordBook04) || akBaseItem.hasKeyWord((master as _sgaAutosortMasterMazz).KeywordBook05) || akBaseItem.hasKeyWord((master as _sgaAutosortMasterMazz).KeywordSpell)
self.sortItem(akBaseItem, aiItemCount, (master as _sgaAutosortMasterMazz).ChestBookSpell)
return
else
int i = 0
while i < ListBookUniques.getsize()
if ListBookUniques.getat(i) == akBaseItem
self.sortItem(akBaseItem, aiItemCount, (master as _sgaAutosortMasterMazz).ChestBookUnique)
return
endIf
i += 1
endWhile
i = 0
while i < ListBookNotes.getsize()
if ListBookNotes.getat(i) == akBaseItem
self.sortItem(akBaseItem, aiItemCount, (master as _sgaAutosortMasterMazz).ChestBookNote)
return
endIf
i += 1
endWhile
i = 0
while i < ListBookJournals.getsize()
if ListBookJournals.getat(i) == akBaseItem
self.sortItem(akBaseItem, aiItemCount, (master as _sgaAutosortMasterMazz).ChestBookJournal)
return
endIf
i += 1
endWhile
endIf
self.sortItem(akBaseItem, aiItemCount, (master as _sgaAutosortMasterMazz).ChestBook)
return
I have two questions really:
1. Can I sort books by anything other then the 3 ways you mentioned? The UI menu has markers for notes/scrolls/books/spell tomes, but the keywords for books are really limited and formlists take too much time to iterate through for each book. There is a data type thing in the book entries, but I don't know if that's a possible option. Adding more keywords is out since it's direct modification of the book items.
2. Can I possibly run the script in a way that the books are first sorted into the book chest, and then sorted again based on the other if statements? This would speed up the clearing of the entry chest and offload it outside the player's view. I tried moving the last sorting line to the beginning, but the items would only hit the first chest and then stop, even without a return statement.
SKSE also has GetWorldModelPath, which returns the model of the object. Since there are only about 5 different models for notes, this can be used to filter out notes.
If a book is neither note nor spell book, then it must be an ordinary book.
One more question, how do I go about using that SKSE command? Would you mind writing a short example? I'm not sure how to add that function and/or how to incorporate SKSE into the scripts, i.e. if I need to add anything to the header parts of the script itself.
I'd also be cool with you pointing me in the right direction for SKSE tutorial stuff instead.
Thanks again!
I'll have to mess around with the functions some, I'm not quite sure the logic I'll need to use GetWorldWorldPath as a search method, but I'll play with it some and see where I get.
EDIT: Got it working, thanks again!
Also, is the only purpose for the pullbar is to get sorted items back to the base chest?
Thanks!
We did add one feature to the system that may interest you - overrides. The Override system allows users to redefine the sorting rules in-game at any time (if for example you wanted books to show up as firewood etc), additionally the override system can be used to integrate any content that is missing important data (keywords etc) or mod-added items that don't quite fit vanilla conventions.
If you get a chance to check it out, please let me know your thoughts
Great sorting mod. Thanks for making it available to modders.
"
Press properties. There are three different entries here:
- BypassGlobalCheck : Setting this to TRUE turns this container into a Sorting Chest
- BypassPlayerCheck : Setting this to TRUE turns this container into a Master Sorting Chest if BypassGlobalCheck is also TRUE. You generally only want one of these.
"
But I just can't set these in the creation kit hitting edit just sets it to False with no option to set them to True so all I get is False and <<
any ideas?
elseif(akBaseItem.hasKeyWord((master as _sgaAutosortMaster).Keywordfood))
sortItem(akBaseItem, aiItemCount, (master as _sgaAutosortMaster).ChestCookedfood)
return
else
while (j<ListAlochol.getsize())
if(ListItemsSmithing.getat(j) == akBaseItem)
sortItem(akBaseItem, aiItemCount, (master as _sgaAutosortMaster).ChestAlochol)
endIf
j+=1
endWhile
sortItem(akBaseItem, 99, (master as _sgaAutosortMaster).ChestCookedfood)
endIf
i keep getting "mismatched input 'elseif' expecting 'endevent
not sure what to do!'
Edit: After about an hour of trial and error it works! If you use themed storage just point the chest location to the chest you have linked from the themed storage activator. sweet!