Jump to content

[LE] Help with 'option menus' on displays?


Recommended Posts

I am trying to create a display that will allow me to choose between two (or more) items to place on a shelf/pedestal through a menu.

 

Basically, if I have two collectible objects from the game, and I wanted to place one of them on one display and the other on a different one, I want to create a little bit of wiggle room in the choice department rather than making it totally up to me ( the mod creater) where everything goes. Especially since this is going to be public eventually (even though i'm making this for my own use...). I want it to be as personally customizable as possible.

 

I have looked online for a few days trying to find any kind of tutorial, and while I have found a few on creating menus, they don't really help me with this particular setup. I was wondering if anyone had any ideas of how to create the script for the menu or how I could go about this. I am pretty new to the Creation Kit so I appreciate any help I can find- and apologize if this is a painfully easy thing to do.

 

Thank you!!

 

---Also, if there is a way to make it so the player can choose -any- item in their inventory to put on the display, that would be even better. I imagine it would still be restricted to item type, like armor, book, miscitem, but if there is a way to do that, I would appreciate some help in building the script!

Edited by ErvielSchmerviel97
Link to comment
Share on other sites

If you want any item of a particular type to be displayed, then your display will need to be more like the weapon plaques which when activated cause the weapon to be dropped and then that particular object reference manipulated into the correct position.

 

If you want to limit between say two specific items, one on the left and the other on the right, that would need to be handled differently. Basically, you'd set up a display static for each item you want to allow in that spot. Your message menu would then, based upon what the player was carrying in inventory, offer options on which to display. When the selection is chosen, that item is removed to a hidden container and the correct display activated.

 

Personally, I have not had much experience with message menu scripts. I will leave that to others to assist you should you still need the help.

Link to comment
Share on other sites

Your idea can be done, but there is an issue that cannot be resolved.


First a little input on the logic of how those display scripts / activators works :

- Upon activating the display it removes the item from your inventory an then "Enables" an "Initialy Disable" pre-positioned STATIC on the display object.

And here is where the problem lies.


You can make a script that will remove the object from your inventory and place it in an xMarker, the xMarkers need to be a part of this because you will need a Reference for the position of each potential object that will be placed (moveto()) in the shelf / display.

But since objects have different sizes and also different X,Y,Z axis center, they will never be positioned on the correct Z axis height, so you will either end up with an object placed on the air with chances that the object will fall from the shelf when Havok kicks in, or with an object inside the shelf / mesh, plus all those object will be Havok sensitive, meaning that any disturbance will move them from their position.


The "weapon plaques" logic can work as long as the objects that will be place share the same X,Y,Z axis center, as all weapons do.


Unfortunately you need to pre define every object position with an "initially disable static" for a display to work correctly.

You can with this logic make a multiple choice Menu script, but in my opinion is way too much work in the cell's creation and in the script itself for something so simple as a display.

Example :

if you have a shelf with 3 display positions for 3 objects that you will choose from the menu to be display, then you have 9 potential outcomes of how those objects could be display, so every display position needs to have 1 of each "Initially Disable" objects.

Plus there is the issue of the Master script itself that needs to keep track of which objects is been place and where and from which activator.

Edited by maxarturo
Link to comment
Share on other sites

  • 2 weeks later...

Could I work around these issues by using a hearthfire trophy base? I have been messing around by myself with the idea but have come across a few issues with it.

 

The trophy base already has a menu built into it, albeit a crafting menu, however I figure if I make new recipes for each item, that only require the item themselves to 'craft' the 'trophy', it would create the trophy to display. However each thing I have tried has come up with a different problem. Such as my recipes not appearing in the crafting list in game, or my items do appear, but instead of the items being 'crafted' and then placed on the trophy base like a regular trophy would, they are placed back into my inventory.

 

Is this a viable solution to this problem/idea, and if so how do I go about this?

 

Thank you so much for your responses by the way, I sincerely appreciate your help!!

Link to comment
Share on other sites

The Hearthfire trophy has two scripts working together the "BYOHHouseTrophyBaseScript" and "BYOHHouseBuildingScript" which is the Master script.

 

The Master script has the function "PlaceAtMe()" to move any of the constructed objects to the trophy base, but the issue i wrote about XYZ axis center Hearthfire DLC resolved it by setting all the object's XYZ axis center in the same position, at the base of the mesh so any object that will be place "PlaceAtMe()" no matter the size or what base you might choose they will all end up in the same position.

 

As i wrote before, unfortunately there isn't a work around to make your idea work correctly.

Link to comment
Share on other sites

I apologize if I am completely missing the mark here, I just want to be sure I am understanding you fully.

 

Are you saying that there is no way to change the items that are placed on a trophy base at all? Even if I create a new recipe for an item, connect that item to a keyword and change the formlist on the BYOHHouseTrophyBaseScript? There is just no way to change what item is placed on the trophy base? (At least not without probably heavy scripting)

Link to comment
Share on other sites

You can assign the Trophy Base to receive different objects, but creating a new recipe and changing the Formlist is just a tenth of the job.

The Trophy Base has already a pre-existing STATIC TROPHY objects that exist as static items in the game/CK and in the formlist and they ALL SHARE THE SAME XYZ AXIS CENTER.

I keep writing this and you don't seem to understand that is the primary and most important element !.

(You can search for those trophy objects in the BYOH "Static" section in CK.)


In order to make your idea work with the Trophy Base you need to make a static version of each Skyrim vanilla object and edit those object in an " External Program " (like NifSkope) so that they all have the same XYZ axis center and add those " new static objects " to the game & then make a formlist that will have all the vanilla items and then link all those to each base.

Plus the most important and crucial, the BYOHHouseTrophyBaseScript DOES NOT GIVE YOU THE OPTION TO RETRIVE / GET BACK THE OBJECT, once you place it and the item is remove from your inventory at the same time is DELETED and lost forever.


In a few words, your idea can not be done !.

There are limitations to what Papyrus and the Game Engine can do.

Aren't you wondering, why? with all those thousands of house mods that exists, not a single experienced modder had done this idea !,...... Because it can not be done !.

Edited by maxarturo
Link to comment
Share on other sites

I apologize I didn't mean to make you repeat yourself. I heard what you were saying I just wanted to make sure that I was understanding what it meant. I am new to modding and pretty much have no idea what I'm doing. I appreciate your help though. All I was asking is was there a possibility before I scrapped the idea, but if not then that's fine, I will find another way.

 

Thanks..

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...