Jump to content

Carreau

Members
  • Posts

    161
  • Joined

  • Last visited

Everything posted by Carreau

  1. This. The materials are set by the nif. The CK links certain materials to impact sets, which is where the game will play wood steps for wooden items, etc. https://forums.nexusmods.com/index.php?/topic/5226735-exporting-models-to-nif-collision-group3ds-max-2013/
  2. Since you said you're doing this with custom model assets, here's the process I've used -Make a static object. Point the model to the custom NIF. My assets all use materials to apply the texture, but I'm not sure if that's necessary -Then make a loadscreen object, and point the loading screen NIF to the static you made -You'll need a transform to orient the object correctly since it's very likely to display not in the correct orientation This has also worked for doing custom magazine load screens. Take the standard magazine static object, copy it, apply a material swap to the model in the static, and then copy the loadscreen object for magazines and change the static object to the custom magazine static I'm currently trying to figure out how to make custom character models that can show up as a load screen. For the most part, it looks to be very similar to making custom models work as load screens, but the character model just needs to be rigged and posed before exporting to NIF.
  3. I didn't bother with the example plugin since it was designed around SKSE. Wolfmark, in the nexus thread I linked, had the OP recompile F4SE off the source code, which is what I did. After I was able to get F4SE recompiled, I started into a new solution and made JUST a bare bones plugin that only ran F4SEPlugin_Query() and F4SEPlugin_Load() in main.cpp Once I got all of that running right, then I started fleshing out my plugin.
  4. I went from a 1TB sata drive to a 1TB nvme SSD. My load times were significantly cut down. I'd say I went from taking more than a couple minutes to load to around 20 seconds. This is on a core i7 6700 with a GTX 970m and 32 GB of DDR4 @ 2400 mhz.
  5. https://forums.nexusmods.com/index.php?/topic/7759433-help-needed-compile-a-cpp-file-into-a-dll/ A lot of good info in here on what needs to be done to set up the compiler to start scripting plugins. Pretty much just follow whatever wolfmark says in it https://github.com/xanderdunn/skaar/wiki/SKSE%3A-Getting-Started I know this is for SKSE, but this will help as well. Lastly, I downgraded from VS2019 to VS2017 simply for the toolkit availability. v140 for VS2015 is what I ended up relying on, and if I remember correctly, it was either not available in 2019 or just a pain in the butt to get. It was easier to pick up VS2017 and run it.
  6. The command menu is not considered dialogue, it's its own separate menu, MultiActivateMenu. There are specific events thrown when an actor is placed into command mode (OnCommandModeEnter() and OnCommandModeExit() ), and OnMenuOpenCloseEvent() also throws an event for MultiActivateMenu. F4SE has a script in UI to force menus to open and close. So you can use CloseMenu() to force the menus to close. Easiest way to do this, would be to toss your companion into an alias, let the alias register for the menu open/close events, and then close the menu from there. Then you can have a script attached to the controlling quest that fills/clears the alias as needed. https://www.creationkit.com/fallout4/index.php?title=CloseMenu_-_UI EDIT: For correcting information
  7. https://www.creationkit.com/fallout4/index.php?title=Data_File 4096 according to the CK wiki (2^12 + 1 since the load order extension utilizes an additional 12 bits of the record address) Not sure if there are exe limitations since this is bethesda weâre talking about
  8. It depends. Unique NPCs can be done. But leveled actors cannot. At least in what I've been able to pull off using ChangeHeadPart() Also, the actor reference will revert their hair to the actor base. This is most notably done when the reference transitions cells (OnLoad() ) and during save game load (OnPlayerLoadGame() ). So you need handlers to check and set the hair again. For non-templated actors, this works pretty well. I tried to add some randomness to settlers by scripting a randomized hair change, and it unfortunately wouldn't work. The scripts would fire, but ChangeHeadPart() had no effect as far as I could tell.
  9. I've used ints as variables successfully in GetFormFromFile(). The only time I've had to do this, I set the property with a default value in hex. The default value is converted to decimal in the CK's script properties tab, and then any subsequent values I've needed to put in that weren't the same as default, they needed to be put in as decimal as well. And as a sanity check, I usually throw a debug trace in to report the returned form to the papyrus log to make sure I'm grabbing the correct form. ScriptName Example extends SomeForm int property iFormID = 0x00123456 Auto string property sModName = "plugin.esp" Auto ;or esm depending on file Event OnInit() GrabForm() EndEvent Function GrabForm() Form thisForm = GetFormFromFile(iFormID, sModName) ;you can cast the form directly as well ;Armor thisArmor = GetFormFromFile(iFormID, sModName) as Armor //for example debug.trace("Script returned form: " + thisForm") ;do whatever I need with the form EndFunction I've used this to make soft dependencies. I see no reason this wouldn't work with DLC plugins. So long as you're leading your hex ID with 0x00 before getting into the FormID proper. The leading zeros will get swapped out for the plugin's index with GetFormFromFile(). So with your example above, I would set it as: int property iFormID = 0x0001F0E6 Auto
  10. The EXE sends up all of your inventory into one big lump. When the pipboy undergoes a change event (changing tabs, changing pages, etc), the inventory is sent up again from the EXE and refreshed into the pipboy viewspace. The way the inventory tab handles what to show is by ways of a filter flag. For JUNK, this is 0x400 (1024). Here's an example of a component in my inventory, and all of the parts associated with it in the internal inventory object favorite = false taggedForSearch = false isLegendary = false count = 11 nodeID = 34383 (0x864F) filterFlag = 1024 (0x400) equipState = 0 text = Acid canFavorite = false formID = 1832749 (0x1BF72D) Now, here's a junk item favorite = false taggedForSearch = false isLegendary = false count = 1 nodeID = 34328 (0x8618) filterFlag = 1024 (0x400) equipState = 0 text = Adjustable Wrench canFavorite = false formID = 315893 (0x4D1F5) The item filter is sent up by the EXE as well. These are all part of DataObj which is a Pipboy_DataObj passed by PipboyChangeEvent.as To get the components out of the JUNK tab and into a custom tab would require changing their filterflag. And F4SE plugin could handle that. Write a flash plugin that can copy the inventory, send the inventory down to your plugin, parse the inventory for anything that casts into a component, alter the filterflag to something the rest of the inventory won't catch, and then send it back up to your flash plugin. Then you can attach an injected tab to the inventory tab list that specifically filters for your custom filter flag.
  11. Youâre not the first, or the last, to forget to launch with F4SE and wonder why your mods arenât working right.
  12. Lol ok, thank you. Modactorvalue does not exist but I found it on creationkit.com nevermind :confused:Creationkit.com is split between skyrim and fallout. You have to pay attention to which one youâre on. ModActorValue() is a skyrim function and was removed when fallout was developed
  13. Because ModActorValue() doesn't exist. You use ModValue(ActorValue akAV, float afAmount) on actors
  14. There was an update in November/December where they expanded the ESL load order. The CK was revved at the same time due to the change.
  15. Interface can definitely be packed. What I find odd, though, is that the CK won't auto-pack interface files. They have to be manually added as for F4SE, you don't want to pack those files in specifically because DLLs are loaded during the game launch. If they're packed in the archive, then they wouldn't be able to load until the mod is loaded. The same should go for translation files. Most xSE plugins load the translation files during game load, not save load.
  16. Instead of adding a blank GUI file, why not just use OnMenuOpenCloseEvent https://www.creationkit.com/fallout4/index.php?title=OnMenuOpenCloseEvent_-_ScriptObject instead? You can key off the UI being opened to set your global. If you want a UI to set a value of a global, you're going to have to get into xSE programming territory as the bridge between ActionScript and Papyrus is scaleform.
  17. https://www.nexusmods.com/fallout4/mods/28822 You can add additional perks to the game and have a UI to purchase them with.
  18. ^this And once you start dipping your toes in the F4SE waters, itâs imperitive to stay up to date
  19. Here's how I implement hotkeys. They work similar to scaleform callbacks. In my config.json, I'll have the input for my hotkey { "id": "Hotkey1_ID", "text": "Name of Hotkey", "type": "hotkey" } Then in keybinds.json { "id": "Hotkey1_ID", "desc": "Whatever your hotkey does", "action": { "type": "CallFunction", "form": "MODNAME.esp|FORMID", "function": "CallHotkey1" } } Naturally, MODNAME.esp is the name of your mod, and FORMID is the unique ID that refers to your quest you have your MCM control script attached to. In your control script, you'll have a simple function Function CallHotKey1() ;code for whatever your hotkey needs to do EndFunction If you want to make sure your hotkey is being called, you can always add a trace to the top of the papyrus function. That will at least spit out into the papyrus log that the callback worked. And since these are simple callback functions, they should have no passed arguments. If you want to call a function that has arguments in its call, then make your hotkey's callback call that function.
  20. So, the whirlybirds act just like they should based on AI pathing in FO4 and 76
  21. That's likely what I'll end up having to put out there as well. But I'll wait for a couple "this isn't working" posts first. Not that I've seen. The DLC ESMs and the CC content are still showing older modify dates. Of course that doesn't necessarily mean they didn't open the headers and make the version changes. Which would potentially not change the modify date stamps. At least xEdit doesn't change the date stamps when you use it to change header information. The only Bethesda files I've seen stamped with a new date would be Fallout4.esm, -Interface.ba2, -Materials.ba2, -Meshes.ba2, -Misc.ba2, and -Startup.ba2. And this was all likely updated specifically for the VR Workshop update.
  22. That's the rub. The user mentioned the game failed to load, not skipped the mod during load. Removing the mod from being active allowed the game to load again. Even with an altered header file. My personal opinion is "update your stuff", and I'm not going to make them go out of there way to run a patcher. Thanks! I'm honestly surprised no one had thought to do it previously. As for the header version numbers. xEdit automatically fills in the 0s. I'm just lazy when I type sometimes and didn't think it was necessary to put in all the 0s in chat. There are also no hard requirements other than the usual Fallout4.esm. The ESP/ESL has one record in it, which is a quest that applies a script to a RefCollectionAlias that is linked from the ActiveCompanions. And Dogmeat is handled separately. Because of course he has to be. The real reason I was having someone with an older install test was to see if the xSE plugin I wrote would be version agnostic since I wasn't requiring the use of address pointers for vanilla functionality. Kind of like how Achievements.dll is version agnostic. I guess I'll find out when the next CC update drops.
  23. https://www.nexusmods.com/fallout4/mods/43382 I made a thing. It adds a weight icon to your companion's trade window to help track their carry weight visually. It works through SWF injection when ContainerMenu is opened while talking/commanding a companion. It was built around the vanilla HUD, but since it's injected, it's pretty much mod agnostic so long as a UI mod hasn't deleted or changed instance names inside the Bethesda UI files.
  24. I am working on a mod and was having someone with an older runtime of the game test a feature for me. They said the game would fail to load while my plugin was active, which is indicative of a header mismatch since Iâm building with the latest CK and 1.10.163 runtime. Changing the header version from 1.0 to 0.95 did not alleviate the problem. Anyone got a solution to make an ESP made with the newest toolset work on older installs? Or should I tell them to suck it up and update? TIA
×
×
  • Create New...