-
Posts
43 -
Joined
-
Last visited
Everything posted by jayne2132
-
Not sure I can help. Never had that problem. Is there a collision node in Nifskope?
-
(I've only done static meshes but can help with the basics). (This is longer than I planned, but may be helpful to others who are starting out, as it covers some things that have changed since earlier tutorials) For some of these steps, older tutorials mention using Chunkmerge or Nifconvert, but NifUtils is newer, and has generally worked for me. http://niftools.sourceforge.net/forum/viewtopic.php?f=38&t=4128 (1) Import nifs into Blender. - you have to prepare the Nif first. If you're not seeing the options ScrollThief mentioned, go to View --> Reset Block Details. In the bottom pane, you'll see NiHeader as the top entry. Expand this, and make ScrollThief's changes. You also need to delete the collision branch (CTRL-Del to delete the entire branch) in addition to the shader properties nodes. - NifUtils can do this for you, but doesn't delete the collision node (so have to go back to Nifskope anyways) and sometimes accidentally deletes nodes that you need. - If there are any mesh nodes not named NiTriShape (like BSLODTriShape), you need to rename them to NiTriShape or you will get an error when importing into Blender. - Use Blender nifscripts to import. I use the settings from this tutorial, but I change scale to 100 (as I use Blender 2.73 and the models end up gigantic otherwise): http://www.nexusmods.com/skyrim/mods/15690/?tab=1&navtag=http%3A%2F%2Fwww.nexusmods.com%2Fskyrim%2Fajax%2Fmoddescription%2F%3Fid%3D15690%26preview%3D1 (2) Import Collision meshes into blender. - use Nifutils to extract collisions into a Nif file - open the nif file in blender as above (depending on the file, it may be easier to create your own collision mesh based on your new mesh, rather than recycling the original collision; in Blender, I copy the mesh into a new layer -- select the mesh, duplicate, don't move it, click 'M', and choose a new layer, and remove the materials. Then use methods like remove duplicates and decimate to reduce the poly count. Then do #4 below.) (3) Get nifs from Blender to CK - the tutorial above covers exporting and prepping the nif file for Skyrim (NifUtils seems to correctly prep the settings, but you'll have to then go into Nifskope to add in the texture nodes); to copy texture nodes, go to file --> new window, open the skyrim nif with the textures you want, CTRL-C on the texture node, go to your nif file, click on the NiTriShape node, CTRL-V to paste. If it pastes in the root and not into NiTriShape, it means there's something wrong with the settings in your node, so go back and make sure you did the above correctly. - save the new nif file in a custom directory in Data/Meshes, and then use it in a new object (apparently you can also drag-and-drop a static nif file, but I haven't had any luck with this) (4) Add collisions to nifs - use Nifutils to add an exported collision nif file (exporting from blender follows same steps as above) to a mesh nif file - then do #3 Note 1: Creatures probably have a lot more nodes than static meshes, so you'll have to find a reference as to what to do with those nodes. Note 2: You won't find any guidance for Blender in the skyrim tutorials, because there's a ton to learn and there is already a definitive intro guide: http://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro . It covers Blender 2.6+ but I've heard that you can find an older version for 2.4. (I use 2.73 which has an easier UI than 2.49 and helpful plug-ins; you can't import/export nifs, but going back and forth is simple: you save an imported nif from 2.49 as a .blend file, open it in 2.73, edit, then save as a *legacy* .blend file, and re-open in 2.49 and export). Note 3: Another helpful link for Skyrim meshes: http://wiki.tesnexus.com/index.php/Skyrim_common_mod_issues Note 4: Meshes can only contain triangles. There is an option in Blender to convert everything to triangles (necessary if you use Remove Duplicates or Decimate) -- in 2.73, it's CTRL-T in Edit Mode. Note 5: Here are a few troubleshooting reminders I keep in my personal how-to text file. They're for Blender 2.73. Note 6: Some helpful Blender 2.6+ plug-ins: http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/3D%20interaction/Align_Tools http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Import-Export/Blend_Library http://blenderaddonlist.blogspot.com/2014/06/addon-parent-to-empty.html
-
No. And scripting can't touch Navmesh, correct. Thanks for your reply. It was good to know there wasn't an existing way to do it. So I created a tes5edit script that will. The script below will duplicate and move a finalized navmesh from one interior cell to another (doesn't do exterior cells or change coordinates yet but should be fairly simple in comparison to the rest). Tested with a follower. But DON'T TRY IT unless you know tes5edit well and have a backup of your esp. It's likely quite unstable. Edited: Removed script, don't want anyone to try it and screw up their mod. :) Have contacted the creators of TES5Edit to see if it's safe to use at all.
-
An optimistic question re: navmeshes: I need to create the same navmesh in multiple exterior locations. Is it possible to duplicate a navmesh? I'm open to any suggestions: - CK? - TES5Edit? - NifSkope? (a way to make a collision layer NPC friendly?) - scripting? (read somewhere you can't do anything with navmeshes in papyrus; and, though it does list an integer type for navmesh, SKSE cell ref iteration does not find any) Thanks!
-
Need anyone with experience with arrays to help me out..
jayne2132 replied to Elathia's topic in Skyrim's Skyrim LE
Never heard of this problem. Can you share ones you have trouble with? I use -1 to make the code more readable. <0 makes me have to think. And if I'm using a lot of functions like these in a script, I add something like: int NotFound = -1 at the top of the script, and then use if somereturnvalue != NotFound Everyone has their own preference, but this reduces (stupid) errors for me. -
Need anyone with experience with arrays to help me out..
jayne2132 replied to Elathia's topic in Skyrim's Skyrim LE
You code concept looks good to me, over all. If I understand, the first function works as you want it to, but the second one doesn't? If you defined kRefs with a length of 10, both functions should spam log errors when i > 9. To avoid this, you can add a check to exit the function ("return") or just exit the while loop when i = 9. Checking the cell ref against your array should be quick. http://www.creationkit.com/Arrays_(Papyrus)#Searching_Arrays Here's an example with your code: string sRefName = CellRefs.GetBaseObject().GetName() if sRestoreHealth.Find(sRefName) != -1 kRefs[i].ForceRefTo(CellRefs) i += 1 if i >= 10 return endif endif If your goal is to check all the string arrays, you will have to check them separately (sRestoreHealth, sRestoreStamina, etc) as unfortunately papyrus doesn't supposed nested arrays. But you could do this by just adding OR (||) clauses to the IF statement above. Does this answer your question? Edited to add: When in doubt, just add a ton of debug.trace statements to your functions to pinpoint what's going on. -
You can use any floors you want -- pick a flat floor you like and use it in the cave. It may not snap to the walls, but it'll work. To flatten the actual cave floor mesh would require Nifskope and a 3d program like Blender. I suppose you could try applying the cave floor texture to a flat floor tile mesh in Nifskope, but no guarantees that the UV mapping would work.
-
LE FadeToBlack script help please :)
jayne2132 replied to saintgrimm92's topic in Skyrim's Creation Kit and Modders
Don't forget FadeOutGame() in addition to imagespacemodifiers. If using ENB, screen won't fade completely to black without it. This is a good reference: http://forums.nexusmods.com/index.php?/topic/951896-improved-cutscenes-with-cinematic-camera-fades-and-more/ Edited to add: Looking at your script again, I see you're using a timed wait function to wait while other things happen. I would use modevents instead, and call the modevent when your other functions are finished. Or, if not using SKSE, put the black screen in your other functions. Scripts can take very different times to execute on different people's computers. Especially if they (as yours inevitably does with what you're doing) call delayed functions, which are tied to framerate. -
How did you create your activators? Often invisible activators have no dimensions when you drag them into the cell, so you can't see or click on them. To make an invisible activator, select any object, then press the activator button on the toolbar. You can then choose to make a new one, or select a pre-made one. You can resize and move it as you want (it does not have to be associated with the object you first selected). It may also work to edit your original activators' dimensions via the cell object window: right-click, select Edit, and go to the second tab. I haven't tested this.
-
Need Help With Script to Sort Items in Container by 3 Form Lists
jayne2132 replied to cavbirdie's topic in Skyrim's Skyrim LE
Thanks Terra Nova! That's great to learn. Going to shorten my scripts quite a bit. :) -
Need Help With Script to Sort Items in Container by 3 Form Lists
jayne2132 replied to cavbirdie's topic in Skyrim's Skyrim LE
Ah that makes sense then. You can use the Find function for that. Objectreference ItemContainer int iIndex = Formlist1.Find(akBaseObject) If iIndex != -1 ItemContainer = Formlist2.GetAt(iIndex) Else ; actions if object not in formlist1 EndIf And a tip -- if you want to optimize for speed, arrays are faster than formlists in papyrus. You can transfer your formlists to arrays when your script starts. The drawback is that there's no Find() function for arrays, so you'd have to iterate the array (like you were doing with the formlist above in the While loop) to find the baseobject. This would still be faster than using formlists. -
Need Help With Script to Sort Items in Container by 3 Form Lists
jayne2132 replied to cavbirdie's topic in Skyrim's Skyrim LE
It's hard to help without knowing the lines that are giving the errors. But I think they must be these: If ItemToMann.GetAt(iIndex1)>=0 If ItemToDisplay.GetAt(iIndex2)<0 If ItemToDisplayWpn.GetAt(iIndex3)<0 Formlists are composed of forms (in your case, I'm assuming armor and other items). Formlist.GetAt() returns the form at that index, it doesn't return an integer. I'm also not sure what your goal is with the >=0 and <0. If you're trying to confirm that a form exists at that index, you can use: If FormlistX.GetAt(iIndex) or If FormlistX.GetAt(iIndex) != noneThey're the same. Though a formlist created in the CK shouldn't have a none entry if you're filling it with base objects (which I assume you're doing). If you're trying to compare the form in the formlist to akBaseItem, you can do: If FormlistX.GetAt(iIndex) == akBaseItemYou can avoid the while loop by writing: int iIndex = FormlistX.Find(akBaseItem) If iIndex != -1 ; do what you need to do EndIf But I'm not sure why you need to get the index of the form in the formlist since you've already confirmed that the item is in the form with FormlistX.HasForm(akBaseItem). -
Because it's unmanaged it should just show up in the right-hand plug-ins list. You need to tick the checkbox in there. If it really isn't working, you can package (put it in a zip file) and install it by opening the archive with mod organizer. But you shouldn't have to. The above works for me, and I do it all the time.
- 4 replies
-
- creation kit
- skyrim
-
(and 1 more)
Tagged with:
-
It's fine for the scripts though any scripts referencing your script by name must be changed. You have to rename the name of the PSC file, then the PEX file, and then the Scriptname in the PSC and recompile. If I understand correctly, BigBizkit, you were asking about renaming scripts for when you release a new mod update? The wiki save file page talks about the way functions, variables, properties, etc are updated when you update a script that already in a save game. I don't imagine this would happen if the script name changed (since the name creates the object itself, and changing the name makes a different object). Scripts attached to object references also continue running even if the mod is uninstalled and the script deleted. If you have any of these, you could end up in a situation where both your old script and your renamed script ran side by side.
-
Just tested it, it worked perfectly with my setup! (child functions overriding parent and all). Thanks for the great info
-
That's what I suspected, but was hoping otherwise. Thanks for replying!
-
I think n0mad23 is running the injector version already? I have GTX980m (graphics card numbering seems to jump all over the place, but it sounds close?). I have the enb non-injector version working with no problem. I actually tried the injector version and got a number of CTD's and trouble loading the game. I know the injector version is supposed to be more stable, so I may have set it up wrong (I didn't have BlackRoseOfThorns advice to follow). But I wonder if it may be related to the extra Nvidia processes running in the background? (I understand the injector doesn't like certain other background processes, like fraps)
-
I think this is a longshot, but I've thought that about other things that turned out to be quite trivial. Is there a way to send script1 with an unknown name to script2? I have a variable number of quests with their own unique scripts set up to extend a common parent script. The child scripts 'push' their attached quest objects to activators. When an activator is activated, I'd like it to call a function in the same quest's script. But at this point the activator doesn't know the name of the script. (The second-best choice, I believe, would be to set up modevents with arguments identifying the quest that should listen to them. Pushing the script objects would be more precise and less work for me, so I'd prefer to do that, if at all possible :smile:.)
-
LE Simple Book/Tome Dispenser for New Characters (LAL Addon?)
jayne2132 replied to SirSalami's topic in Skyrim's Mod Ideas
Have you looked at this? Just spell tomes, no skill books. I've used it with perma, no issues. It's in the LAL prison cell. -
Oh -- that didn't occur to me to try the TXT strings. Unfortunately if that works, it means that I could find the location of a cheese wheel, but to do it with anything a player might drop, I'd need to know every possible string... The examples I've seen using the MoveToNode() method have used it with specific known objects that are havoked. I haven't seen it used in the more generic sense I'm trying to, and maybe this is why. I'm working on a mod that moves a ship from port to port, including anything the player might put on it. The best workaround I've come up with is to take any object the player drops and move it to a specific known location (an open crate). Then encourage users to use Jaxonz repositioner if they want to position objects themselves... Not ideal, but better than having cheese wheels floating around the deck :) Thanks for your help
-
Question re:getting item position after it's havoked. After running the havok sim, an object retains its original position data, though the 3d appears to be in the new place. This is a known problem (documented in the notes here: http://www.creationkit.com/ApplyHavokImpulse_-_ObjectReference). I'm trying to get the position data for an object that the player drops on the ground from their inventory. I've gone through the possible solutions. TranslateToRef just sends it back to its original location (hanging in the air in front of the player). Using MoveToNode with a dummy object appears promising, but I can't find the node string! I don't have any experienced with meshes or nifscope in Skyrim, so I may be approaching this all wrong... But, for example, for a cheese wheel, I've opened it up in NifScope, and here is what it looks like: http://i57.tinypic.com/w7h3ki.jpg None of these looks terribly promising as nodes, but I've tried them anyways. I always (unsurprisingly) get the papyrus log error: [02/06/2015 - 10:54:18AM] Error: (0901EE63): does not have a node named 'BSFadeNode'. I'd appreciate any thoughts on finding the node string or another way to get position data for a havoked item. Thanks!
-
Help for Best way to install these mods?
jayne2132 replied to shadow85's topic in Skyrim's Skyrim LE
I like Mod Organizer. With it, you don't have to worry about install order at all. It keeps each mod in its own folder, and then 'magically' loads them in the order specified when you launch the game. It'll also warn you about conflicts and uses Loot to order mods. I'm sure it's not perfect, but I haven't had any issues with its mod ordering. You don't have enough mods on the list to worry about using Wrye bash to combine ESP's. Someone else will have to answer as to Requiem. I think there are extra steps. You've got some good graphics mods on there. I assume you've got a decent graphics card. Anyways, texture packs are 'easy' to install, true, but the issue with multiple texture packs is that they may overwrite parts of each other, so you want your favorites loaded last. If you install them with Mod Organizer, you can tweak their priorities. Just remember with MO (and a mistake I keep making), is that it loads its own INI files for each profile, so the ones in your My Documents folder aren't used. Remember to change the MO ones for the profile you use instead. -
Need Help: Casting/Calling Scripts from Package Fragments
jayne2132 replied to jayne2132's topic in Skyrim's Skyrim LE
Thanks Lofgren -- I understood inheritance in terms of casting objects to different types, but didn't realize it also restricted what scripts could be attached to what forms. Yes, my intention was to create generic scripts that I could potentially add to objects as well as quests, so if I decide to do that, I'll have them extend "form". As far as multithreading, I just skimmed through Chesko's wiki guide and it sounds like exactly what I need to do, so I'll try to tackle that once I get everything else working. I thought I'd read in one of the best practices threads that it was better to divide up scripts, but I must have misunderstood. It does make sense that it would *not* make a difference, though, as the primary function waits for each function it calls to complete before continuing on to the next one. Thanks again -
Need Help: Casting/Calling Scripts from Package Fragments
jayne2132 replied to jayne2132's topic in Skyrim's Skyrim LE
They're all attached to the same quest: _wsManagerScript - extends quest, deals with OnInit() and outside trigger calls, and calls functions in the other 3 scripts _wsManager_Static - does heavier processing, uses properties from ManagerScript and calls functions in Position _wsManager_Dynamic - does heavier processing, like Static but acts on different objects _wsManager_Position - deals with calculations, uses properties from ManagerScript I made the last 3 scripts extend ObjectReference, it was an arbitrary choice because they weren't dealing with any quest objects, but maybe I chose wrong? They now extend Quest and work the same way. Do all scripts attached to an object/quest have to extend the form type they're attached to? Or should a generic script extend "Form" instead? I originally had these all in one script, but it was getting unwieldy and, with my very very amateur understanding of multithreading, I assume that dividing the heavier processing (the main function takes several seconds to run) into multiple scripts is more efficient. Let me know if my logic is wrong here -- I'm still learning and appreciate the feedback.